
WordPressには投稿のカテゴリーやタグのようなグループ分け増やすことができます。カスタム投稿を作った際にカテゴリーが欲しい場合や、投稿でもカテゴリーやタグとはまた別のグループを作りたい場合に便利な機能がカスタムタクソノミー。そんなカスタムタクソノミーについてのメモです。
カスタムタクソノミーとは
タクソノミーというのは分類という意味で、カテゴリーやタグもタクソノミーです。WordPressにはデフォルトで4種類の分類が組み込まれています。【カテゴリー・タグ・リンクカテゴリー・投稿フォーマット】
【参照】タクソノミー – サポートフォーラム – WordPress.org 日本語
カテゴリーやタグなどすでに組み込まれているタクソノミーの他に作成するオリジナルの分類をカスタムタクソノミーと呼んでいます。
カテゴリーやタグの中で分類タイプを増やすこともできますが、デフォルトのカテゴリーやタグとはまた別の分類タイプがほしい場合に、カスタムタクソノミーを作成します。

なぜカスタムタクソノミーを作るか
カスタムタクソノミーは運用側には整理しやすく、ユーザーに見やすいサイトにするために作成することが多いです。サイトの構造を考えたときに、分類がたくさん必要になることもあると思います。
カテゴリーやタグのみで運用しようとすると編集記事が探しにくかったり、サイト上でも探しにくくなることがあります。またカテゴリーやタグの一覧の他に別の一覧を作成したい場合、カスタムタクソノミーがあると表示させやすいです。
カスタムタクソノミーのメリットは分類を整理し、情報を探しやすくすることができること。またそれぞれの分類タイプが細かく設定されていることによって、プログラムで管理しやすくなることが挙げられます。
分類タイプが多くなることで投稿管理やプログラム作成が複雑になりやすいことはデメリットになるかもしれません。
どちらの手間を取るかということから使用するかしないかを選ぶのもいいですが、サイトの構成やデザインによっては追加の分類タイプがあった方が良い場合もあります。しっかり整理できるような分類を作成することが重要です。
カスタム投稿とセットで作成
カスタム投稿を作ったときにセットでカスタムタクソノミーを作ることが多いです。
カスタム投稿タイプを作ると、デフォルトではカテゴリー分けができません。その投稿タイプにカテゴリーを付ける場合は、投稿のカテゴリーやタグを使用する設定したりカスタムタクソノミーの作成が必要です。
カスタムタクソノミーの作成方法
カスタムタクソノミーを作成するにはプラグインを使用する方法とPHPコードを記述する方法がありますが、ここではPHPコードを記述して作成する方法をご紹介します。
ここではサンプルとして、「カスタム投稿タイプ(post_type_cooking)」で使用する分類タイプに「レシピ(cooking-recipe)」というカスタムタクソノミーを追加します。
コードは functions.php
に記述します。
add_action('init', 'custom_tax');
function custom_tax() {
$args = [
'label' => 'レシピ',
'hierarchical' => true,
'show_in_rest' => true,
];
register_taxonomy('cooking-recipe','post_type_cooking', $args);
}
register_taxonomy()
でカスタムタクソノミーの登録をします。
register_taxonomy(カスタムタクソノミー名, このタクソノミーを使う投稿タイプ, タクソノミーの仕様);
カスタムタクソノミー名は「32文字以下にすること、小文字の英数字、ダッシュ(-)およびアンダースコア(_)のみ使用できる」と説明されていて、日本語は使用できないような感じで書かれています。
ただ私が確認した際は日本語でも大丈夫でした。でも念の為英数字にしておくほうが良いと思います。
次の値にはカスタムタクソノミーを使用する投稿タイプを付けます。ここで指定した投稿タイプにカスタムタクソノミーが追加されます。
サンプルコードでは「post_type_cooking」というカスタム投稿にタクソノミーを追加するよう設定しています。カスタム投稿以外に投稿や固定ページに追加することも可能で、投稿なら post 、固定ページなら page を入れます。複数の投稿タイプ設定も可能です。
register_taxonomy('custom-tax',array('post', 'page'), $args);
最後にタクソノミーの仕様を記述します。今回のコードでは $args
の部分です。今回は最低限つけたいものだけを記述しましたが、もっとさまざまな設定をすることができます。省略した場合はデフォルトの設定が反映されます。
設定できる項目がとても多いので、必要なものを都度確認して設定していきましょう。ここのカスタマイズが柔軟にできるようになると、より使いやすいタクソノミーを作ることができます。
【参照】register_taxonomy() | Function | WordPress Developer Resources
ブロックエディターでカスタムタクソノミーが表示されない?!
カスタムタクソノミーのコードを書いたのにブロックエディターで表示されない場合、'show_in_rest' => true,
が抜けていないか確認してみてください。
このプロパティはデフォルトでは false
になっています。クラシックエディターではこの記述がなくても表示されるのですが、ブロックエディターでカスタムタクソノミーを表示させるためには true
にすることが必須です。
カテゴリーのように階層ありにする場合は「’hierarchical’ => true」
'hierarchical' => true,
この記述はタクソノミーに階層をつくるかどうかの設定です。デフォルトで存在するカテゴリーのように使いたいのか、タグのように使いたいのかによってここの設定を変えていきます。
カテゴリーは階層をつけることができる分類タイプで、タグは階層がない分類タイプとなっています。
true なら階層あり。false なら階層なしになります。初期値は false なので、記載しない場合は階層なし(タグ)の設定になります。カテゴリーのように登録したい場合は 'hierarchical' => true,
を記述します。
カスタムタクソノミーの一覧表示
カスタムタクソノミーを作成したらタクソノミーの一覧ページが表示されるか確認しましょう。
カスタムタクソノミーの記事一覧が表示されるURLはデフォルトで以下のような形です。
https://example.com/taxonomy-name/term-name/
もし404エラーになる場合は管理メニューの「設定 > パーマリンク設定」で「変更の保存」ボタンをクリックしてみてください。この他うまく表示されない場合は以下の内容もチェックしてみてください。
一覧ページのURLの注意点
タクソノミーを階層表示にしていた場合、階層通りに表示されず /taxonomy-name/term-name/
という形になります。
「レシピ」タクソノミー(cooking-recipe)に「肉」のターム(meat)、そして肉の下層に「豚肉」のターム(pork)を作ったとします。
この場合、豚肉(pork)のレシピ一覧ページを見るときは /cooking-recipe/pork/
でアクセスする必要があります。/cooking-recipe/meat/pork/
でアクセスしようとしても404になり一覧ページが表示されません。
デフォルトのアクセスURLを変更したい場合はリライトルールの設定が必要です。
カスタムタクソノミーアーカイブのテンプレート
カスタムタクソノミーの一覧表示に使われるテンプレートファイルは以下のものです。下記の順番で優先的に割り当てられます。
- taxonomy-taxonomy_name-term_name.php
- taxonomy-taxonomy_name.php
- taxonomy.php
- archive.php
- index.php
カスタムタクソノミーの一覧を他の一覧ページとデザインを変更したい場合は、この割り当て順を参考にファイルを作成しましょう。
カテゴリー : WordPress