Moral Hazard!!

ドラマーが音楽やホームページやガラクタを作るよ。

pTypeConverterで残ってしまったカテゴリを除去する方法(荒業)

No Comment wordpress

タイトルの通り。
pTypeConverterで通常の投稿(カテゴリ名"hoge"とする)をカスタム投稿に変換しても、カテゴリ情報は削除されない。
そのため、その後条件分岐でin_category("hoge")などで振り分けようとしても通常の投稿と一緒に、変更したカスタム投稿が引っかかってしまう。
そりゃそうっちゃそうなんだけど、古いWPでカテゴリ分けで作っていたものを、カスタム投稿に振り分けたいなんて案件はざらにある。

で、カスタム投稿にした投稿からカテゴリ情報を除去する為には、そのカスタム投稿に"categeory"というカスタムタクソノミを作ってやればいい。

	register_post_type( 'hoge',
        array(
        'labels' => array(
        'name' => __( 'カスタム投稿名' ),
        'singular_name' => __( 'カスタム投稿名' )
        ),
        'public' => true,
        'has_archive' => true,
        'menu_position' => 5,
		'supports'=> array('title', 'thumbnail', 'excerpt', 'editor') ,
        )
    );
	register_taxonomy(
		'category',
		'column',
		array(
		'hierarchical' => true,
		'update_count_callback' => '_update_post_term_count',
		'label' => 'カテゴリー',
		'singular_label' => 'カテゴリー',
		'public' => true,
		'show_ui' => true,
		'query_var' => true
		)
	);  

こんな感じでカスタム投稿名に「カテゴリ」というカスタムタクソノミを追加してやると、通常の投稿(post)と同じカテゴリーが表示される。
ここでカテゴリ情報を除去すると、MySQL内のカテゴリとの関連性を示す「wp_term_relationships」が除去される。
カテゴリーもカスタムタクソノミの一種ってことですね。
流石Wordpress。