WordPressカスタム投稿のカテゴリ(タクソノミーカテゴリー)のセレクトプルダウンメニューを実装する

WordPressカスタム投稿のカテゴリ(タクソノミーカテゴリー)のセレクトプルダウンメニューを実装する

WordPressの一覧ページなどで、カテゴリーを選択して表示するselectを使用した
プルダウンメニューを表示させたい!と思っても、
WordPressのカスタム投稿の(タクソノミー)のカテゴリーは通常の

  <?php wp_dropdown_categories(''); ?>

では登場してくれません。。。(泣)



カスタム投稿(タクソノミー)の追加とカテゴリーを使えるようにする魔法の呪文は以下
functions.phpに記述します。

例えば実績の記事をカスタム投稿記事(works)とし、カテゴリも使えるようにする

add_action( 'init', 'create_post_type' );
function create_post_type() {
	 register_post_type( 'works', // カスタム投稿のスラッグ
        array(
            'labels'            => array(
                'name'          => __( '実績' ),   // 投稿タイプ名 管理画面に表示されるやつ
                'singular_name' => __( '実績' )    // 投稿タイプ名
            ),
            'public' => true,
            'has_archive' => true,
            'menu_position' =>4, //これは管理画面のメニューを4番目に表示の例
            'supports' => array('title','editor','thumbnail')
        )
    );
 
	register_taxonomy(
        'workscat', // タクソノミーカテゴリーのスラッグ
        'works', // カスタム投稿(タクソノミー)のスラッグ

        array(
            'hierarchical' => true, // trueだと親子関係が使用可能。falseで使用不可
            'label' => '実績カテゴリ',  
            'singular_label' => '実績カテゴリ', 
            'public' => true,
            'show_ui' => true
        )
    );
	 
}

それでは一覧ページにカスタム投稿のカテゴリのプルダウンメニューを追加します。
全てのカテゴリの記事が表示される一覧ページのスラッグは(works-list)とします。

<select name="select" onChange="location.href=value;">
	<option value="<?php echo home_url(); ?>/works-list/">すべて</option>
	<?php
	$terms = get_terms('workscat');
	foreach($terms as $term) {
		$terms = get_the_terms($post->ID,'workscat');
		$slug = $terms[0]->slug;
		//現在表示されているページと同じカテゴリーの場合「selected」属性を付与する
		if(is_tax() && $slug == $term->slug){
			echo '<option value="'.get_term_link($term->slug,'workscat').'" selected>'.$term->name.'</option>';
		}else{
			echo '<option value="'.get_term_link($term->slug,'workscat').'">'.$term->name.'</option>';
		}
	}
	?>
</select>

できました?

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です