「カスタム投稿を追加したが、カスタムタクソノミーのターム(カテゴリー)別に絞り込む機能がないな….」
という悩みを解決できる記事を書きました。
デフォルトの投稿には、「日付」と「カテゴリー」で絞り込む機能が標準で装備されておりますが、カスタム投稿には、「日付」で絞り込む機能しか装備されておりません。
下記の機能です。
記事数が増えると重宝される機能ですので、クライアントにも標準で追加して納品するのがマストかと。
ということで今回は、「管理画面のカスタム投稿一覧をタームで絞り込む機能を追加する方法」を解説しますね!
管理画面のカスタム投稿一覧をタームで絞り込む機能を追加する方法
「functions.php」に下記のコードを記述してください。
カスタム投稿タイプのスラッグ : 「news」
カスタムタクソノミーのスラッグ : 「cat_news」
という前提で話を進めます。
function add_custom_taxonomies_term_filter() {
global $post_type;
if ($post_type == 'news') { // カスタム投稿タイプのスラッグ
$taxonomy = 'cat_news'; // カスタムタクソノミーのスラッグ
wp_dropdown_categories(
array(
'show_option_all' => 'カテゴリー一覧', // 自由に変更可(デフォルトの投稿に合わせております)
'orderby' => 'name', // タームを名前順で並べる(初期値: ID)
// 'show_count' => 1, // 各タームに属する投稿数を表示(初期値: 0/False(しない))
'hide_empty' => 0, // 投稿のないタームを表示する(初期値: 1/True(しない))
'name' => $taxonomy,
'selected' => get_query_var($taxonomy),
'hierarchical' => true, // タームを階層形式で表示する(初期値: 0/False(フラットに表示))
'taxonomy' => $taxonomy,
'hide_if_empty' => 1, // タームが一つもない場合は、ドロップダウンメニュー(絞り込み機能)を非表示(初期値: 0/False(表示))
'value_field' => 'slug'
)
);
}
}
add_action('restrict_manage_posts', 'add_custom_taxonomies_term_filter');
コピペ用
function add_custom_taxonomies_term_filter() {
global $post_type;
if ($post_type == 'カスタム投稿タイプのスラッグ') {
$taxonomy = 'カスタムタクソノミーのスラッグ';
wp_dropdown_categories(
array(
'show_option_all' => 'カテゴリー一覧',
'orderby' => 'name',
// 'show_count' => 1,
'hide_empty' => 0,
'name' => $taxonomy,
'selected' => get_query_var($taxonomy),
'hierarchical' => true,
'taxonomy' => $taxonomy,
'hide_if_empty' => 1,
'value_field' => 'slug'
)
);
}
}
add_action('restrict_manage_posts', 'add_custom_taxonomies_term_filter');
基本的な装備としましては、上記で足りるかと。
他の引数が気になる方のためにCodexのリンクを記載します。
テンプレートタグ/wp dropdown categories
今回は以上です。