WordPress管理画面の投稿一覧にタクソノミーを表示する方法

WordPressでカスタムタクソノミーを使っていると、
- 投稿一覧を見ても、どの記事にどのタクソノミーが設定されているか分からない
- いちいち記事を開いて確認するのが手間
という場面に遭遇することがあります。
そこで、この記事では、通常の投稿一覧にタクソノミーをカラム表示する方法を解説します。
functions.phpにコードを追加するだけで実現できます。
カスタムタクソノミーを利用してWordPressを運用されている方は、ぜひ参考にしてください。
ちなみに、今回は、通常の投稿一覧におけるタクソノミーの表示です。
カスタム投稿タイプの一覧画面にタクソノミーを追加したい場合は、フックの書き方が異なるので、以下の記事を参考にしてください。
👉 WordPressカスタム投稿タイプの一覧にタクソノミーを表示する方法
タクソノミーをカラムに追加するしくみ
WordPressの管理画面にカラムを追加するには、2つのフックを使います。
- manage_posts_columns:カラムのヘッダー(列名)を追加するフィルター
- manage_posts_custom_column:カラムの中身(各行の値)を出力するアクション
この2つをセットでfunctions.phpに記述するのが基本の流れです。
まず、この2つのフックを使った基本的なコードの書き方を、次の章で紹介します。
基本のコード
例として、スラッグ「genre」・ラベル「ジャンル」というタクソノミーを
投稿一覧に表示してみます。
// カラムのヘッダーを追加
function add_genre_column( $columns ) {
$columns['genre'] = 'ジャンル';
return $columns;
}
add_filter( 'manage_posts_columns', 'add_genre_column' );
// カラムの中身を表示
function add_genre_column_data( $column_name, $post_id ) {
if ( $column_name === 'genre' ) {
$terms = get_the_terms( $post_id, 'genre' );
if ( $terms && ! is_wp_error( $terms ) ) {
$term_names = array_map( function( $term ) {
return esc_html( $term->name );
}, $terms );
echo implode( ' / ', $term_names );
} else {
echo '—';
}
}
}
add_action( 'manage_posts_custom_column', 'add_genre_column_data', 10, 2 );
‘genre’の部分をご自身のタクソノミースラッグに変更してください。
このコードをfunctions.phpに追加すると、
投稿一覧に「ジャンル」カラムが追加され、各記事に設定されたタームが表示されます。
get_the_terms()は、タームが設定されていない場合にfalseを、
エラー時にWP_Errorオブジェクトを返すことがあります。
is_wp_error()で確認してから出力することで、エラーが画面に表示されるのを防げます。
絞り込み検索を追加する
カラム表示に加えて、タクソノミーで投稿を絞り込めるセレクトボックスを追加すると
管理画面がさらに使いやすくなります。
function add_genre_filter() {
global $post_type;
if ( $post_type !== 'post' ) return;
$terms = get_terms( array(
'taxonomy' => 'genre',
'hide_empty' => false,
) );
if ( empty( $terms ) || is_wp_error( $terms ) ) return;
$selected = isset( $_GET['genre'] )
? sanitize_text_field( $_GET['genre'] )
: '';
echo '<select name="genre">';
echo '<option value="">ジャンルで絞り込む</option>';
foreach ( $terms as $term ) {
printf(
'<option value="%s"%s>%s</option>',
esc_attr( $term->slug ),
selected( $selected, $term->slug, false ),
esc_html( $term->name )
);
}
echo '</select>';
}
add_action( 'restrict_manage_posts', 'add_genre_filter' );
👉 $post_type !== ‘post’ の条件を入れることで、
通常投稿の一覧画面のみにセレクトボックスを表示できます。
まとめ
今回は、WordPress管理画面の投稿一覧画面にタクソノミーの表示を追加する方法をまとめました。
- カラム追加は manage_posts_columns と manage_posts_custom_column の2つのフックを使う
- タームの出力は is_wp_error()チェックを入れておくと安全
- 絞り込みセレクトは restrict_manage_posts フックで追加できる
- 編集は 必ず子テーマのfunctions.phpで行うこと
今回紹介したコードを追加するだけで、WordPressの管理画面の使いやすさが大きく変わります。
ぜひ試してみてください。
カスタム投稿タイプの一覧に表示したい場合は、フックの書き方が変わります。
複数タクソノミーの同時表示や絞り込みの応用方法もあわせて解説しています。
👉 【関連記事】WordPressカスタム投稿タイプの一覧にタクソノミーを表示する方法






















