areaというカスタムタクソノミーを投稿記事に紐づけたとします。
それを表示するのはCustom Post Type UIのプラグインでもできますが、絞り込みは設定できません。
そこで絞り込みできるようにカスタマイズしてみました。
目次
WordPressの管理画面でカスタムタクソノミーの絞り込み表示機能を追加する
やり方は簡単です。
fucntions.phpの下記のコードを追加しましょう。
function add_taxonomy_filter() {
global $post_type;
// 投稿タイプが 'post' の場合
if ( 'post' == $post_type ) {
$taxonomy = 'area'; // カスタムタクソノミーのスラッグ
// カスタムタクソノミーのタームを取得
$terms = get_terms(array(
'taxonomy' => $taxonomy,
'hide_empty' => false, // 空のタームも表示
));
// ドロップダウンを表示
?>
<select name="<?php echo esc_attr($taxonomy); ?>">
<option value=""><?php echo esc_html__('すべての地域', 'textdomain'); ?></option>
<?php
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
foreach ( $terms as $term ) {
printf(
'<option value="%s" %s>%s</option>',
esc_attr( $term->slug ),
( isset($_GET[$taxonomy]) && $_GET[$taxonomy] === $term->slug ) ? 'selected="selected"' : '',
esc_html( $term->name )
);
}
}
?>
</select>
<?php
}
}
add_action( 'restrict_manage_posts', 'add_taxonomy_filter' );
あとは確認してみましょう。
以上です。