WordPressは投稿の分類をカテゴリやタグで管理できますが、もっと細かく管理したい場合は 独自の分類(カスタムタクソノミー) を追加できます。
これを実現するのが register_taxonomy()
関数です。
この記事では、register_taxonomy()
の基本的な使い方から、実際に独自の分類を作成して使うまでをわかりやすく解説します。
目次
独自の分類(カスタムタクソノミー)とは?
カスタムタクソノミーは、WordPressの「投稿」「固定ページ」以外に独自のグループ分けを作る仕組みです。
例えば、商品投稿に「ブランド」や「タイプ」を分類として追加したり、イベント投稿に「地域」や「ジャンル」を設定したりできます。
カスタム投稿にカスタムタクソノミーを追加する時によく使われます。
register_taxonomy() の基本構文
register_taxonomy( $taxonomy, $object_type, $args );
$taxonomy
独自分類のスラッグ名(例:genre
、brand
)$object_type
この分類を関連付けたい投稿タイプ(例:post
、custom_post_type
)$args
タクソノミーの設定をまとめた配列(ラベルや表示方法など)
独自分類を追加する基本例
function create_custom_taxonomy() {
$labels = array(
'name' => 'ジャンル',
'singular_name' => 'ジャンル',
'search_items' => 'ジャンルを検索',
'all_items' => 'すべてのジャンル',
'edit_item' => 'ジャンルを編集',
'update_item' => 'ジャンルを更新',
'add_new_item' => '新規ジャンルを追加',
'new_item_name' => '新しいジャンル名',
'menu_name' => 'ジャンル',
);
$args = array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array('slug' => 'genre'),
);
register_taxonomy('genre', array('post'), $args);
}
add_action('init', 'create_custom_taxonomy');
コードのポイント
hierarchical
をtrue
にするとカテゴリのように親子関係が作れます。show_ui
をtrue
にすると管理画面に編集画面が表示されます。show_admin_column
で投稿一覧画面に表示の有無を制御できます。rewrite
の'slug'
はURLに表示される部分で、SEO的にも重要です。
カスタム投稿タイプと組み合わせて使う例
カスタム投稿タイプ「book」に「genre」を追加したい場合:
register_taxonomy('genre', array('book'), $args);
カスタム投稿タイプの登録は register_post_type()
を使いますが、タクソノミーはこれとセットで設定することが多いです。
以下は「カスタムタクソノミーの一覧ページの作り方」に関する補足解説です。記事の最後などに自然に追加できます。
カスタムタクソノミーの一覧ページの作り方
カスタムタクソノミーを追加すると、自動的にその分類ごとのアーカイブページ(一覧ページ)が生成されます。
例えば、genre
というタクソノミーの場合、URLは通常 https://example.com/genre/分類スラッグ
となります。
一覧ページをカスタマイズするテンプレートファイル
WordPressはテンプレート階層に従い、以下の順でテンプレートファイルを読み込みます。
taxonomy-{taxonomy}-{term}.php
→ 特定のタクソノミーと分類用のテンプレートtaxonomy-{taxonomy}.php
→ タクソノミー単位の一覧テンプレートtaxonomy.php
→ すべてのタクソノミー共通の一覧テンプレートarchive.php
→ 投稿タイプのアーカイブ共通テンプレートindex.php
→ 最終的なフォールバック
テンプレート例:taxonomy-genre.php
<?php get_header(); ?>
<h1><?php single_term_title(); ?> の一覧</h1>
<?php if (have_posts()) : ?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile; ?>
</ul>
<?php the_posts_pagination(); ?>
<?php else : ?>
<p>該当する投稿はありません。</p>
<?php endif; ?>
<?php get_footer(); ?>
このようにテンプレートを用意すれば、タクソノミーの分類ごとに独自の一覧ページを作成できます。
注意点
rewrite
のslug
設定が URL に影響するので、パーマリンク設定を変更した場合は再設定が必要です。- キャッシュやパーマリンクの設定を変更した際は、管理画面の「設定 > パーマリンク」で「変更を保存」を押してリライトルールを更新してください。
この補足で、カスタムタクソノミーの一覧ページ作成の流れが理解しやすくなると思います。
管理画面での利用イメージ
追加したタクソノミーは投稿編集画面のサイドバーに表示され、チェックボックスやドロップダウンで分類を選択できます。
また、投稿一覧画面にも新たな列として追加され、分類ごとに絞り込みも可能です。
まとめ
register_taxonomy()
を使えば、WordPressサイトをより細かく管理できる独自分類を簡単に追加可能です。
カテゴリやタグだけでは足りないサイトの機能拡張に、ぜひチャレンジしてみてください。