タクソノミーの管理画面内リンクを追加した状態


WordPressの投稿一覧画面に「カスタムタクソノミー」の一覧を追加する方法です。 各項目には、管理画面内での絞込みリンクが貼られます。 こちらのエントリーのサンプルスクリプトを改良したものです。

ここでは、カスタム投稿タイプに任意のタクソノミー欄を追加する前提で解説します。

サンプルコード

使用中のテーマの「functions.php」に、以下のコードを追加してください。

function show_term_area( $defaults ) {
$defaults['★タクソノミーの英語名★'] = '★タクソノミーの日本語名★';
return $defaults;
}
add_filter('manage_★投稿タイプの英語名★_posts_columns', 'show_term_area', 15, 1);

function show_term_area_id($column_name, $id) {
if( $column_name == '★タクソノミーの英語名★' ) {
$terms = $terms = get_the_terms( $id, '★タクソノミーの英語名★' );
$cnt = 0;
foreach($terms as $var) {
echo $cnt != 0 ? ", " : "";
echo "<a href=\"" . get_admin_url() . "edit.php?★タクソノミーの英語名★=" . $var->slug . "&post_type=★投稿タイプの英語名★" . "\">" . $var->name . "</a>";
++$cnt;
}
}
}
add_action('manage_★投稿タイプの英語名★_posts_custom_column', 'show_term_area_id', 15, 2);

解説

このカスタマイズは、ふたつの関数群に分かれています。

ひとつめの関数「show_term_area」では、カスタム投稿の一覧画面のテーブルにタクソノミー欄を追加しています。 ふたつめの関数「show_term_area_id」では、テーブルを出力する際に、先ほど定義したタクソノミー欄があれば、現在出力している投稿のIDに基づいたタクソノミー一覧を、管理画面内のリンク付きで表示します。

補足

WordPressの投稿一覧は、デフォルトの投稿であれば「カテゴリー」や「タグ」欄で絞り込みができますが、カスタム投稿タイプ画面でそれらを使用しない場合は、日付・キーワード以外の絞り込みができなくなります。 このカスタマイズをすることで、過去の記事を見付けやすくなり、修正がしやすい管理画面になります。

ただし、記事ごとにタクソノミー情報を取得することになるため、管理画面の表示は若干遅くなります。タクソノミーがいくつまで増えるか予想できなかったり、データベースのスペックに不安がある場合は避けた方が良いでしょう。