functions.phpに色々追加してカスタム投稿・タクソノミーの準備はできたけど、投稿画面にタクソノミーに追加したタームの名前がない。。。
あと、日付だけじゃなくてタームで絞り込みしたい。。。
、、、っと思ったので、色々調べたら簡単にできたのでメモ。
ターム名を表示
以下のコードをfunctions.phpに追加することで、ターム名が表示できます。
//カスタム投稿画面にターム名を表示
function add_custom_column( $defaults ) {
$defaults[‘タクソノミー名'] = ‘管理画面に表示されるテキスト';
return $defaults;
}
add_filter('manage_posts_columns', 'add_custom_column');
function add_custom_column_id($column_name, $id) {
if( $column_name == ‘タクソノミー名' ) {
echo get_the_term_list($id, ‘タクソノミー名', '', ', ');
}
}
add_action('manage_posts_custom_column', 'add_custom_column_id', 10, 2);
ターム別ソート機能を追加
以下のコードをfunctions.phpに追加することで、追加したターム別にソート(絞り込む)機能を追加できます。
// カスタム投稿画面にターム別ソート機能を追加
add_action('restrict_manage_posts', function() {
global $post_type;
if ( !in_array($post_type, [‘カスタム投稿名']) ) return;
$taxonomy = ‘タクソノミー名';
$terms = get_terms($taxonomy);
if ( empty($terms) ) return;
$selected = get_query_var($taxonomy);
$options = '';
foreach ($terms as $term) {
$options .= sprintf('<option value="%s" %s>%s</option>'
,$term->slug
,($selected==$term->slug) ? 'selected="selected"' : ''
,$term->name
);
}
$select = '<select name="%s"><option value="">指定なし</option>%s</select>';
printf($select, $taxonomy, $options);
});
こんな感じになるかと思います。
*間違えてタクソノミーと表示してあります。
以上、短い備忘録でした。