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>
できました?
この記事を気に入ったら
いいね!&フォローしよう最新情報をお届けします