ここでは、プラグインを使わずにfunctionファイルにコードを記入してカスタムタクソノミーを増やす方法についてお話します。
タクソノミーとは
タクソノミーを私なりに言葉にするなら「分類軸」とか「分類項目」という表現が良いのではないかと思います。WordPressの「投稿」にもあらかじめ「カテゴリー」と「タグ」というタクソノミーが付いています。カスタムタクソノミーというのは、このような分類軸を追加する機能です。
具体的にどういうときに追加が必要なのかというと、不動産サイトが良い例です。物件選びの分類軸って、「エリア」「家賃」「間取り」「こだわり条件」など、ひとつのカテゴリにまとめることのできない切り口が複数ありますよね。このようなときにカテゴリ分類を増やすのです。
カスタムタクソノミーの作り方
カスタムタクソノミーはカテゴリのような階層(親子関係)をもった形でも作れますし、階層を持たないタグのような形でも作れます。カスタムタクソノミーを作るにはコードをfunction.phpに追加するかインクルードさせます。個人的にはインクルードさせる方法がおすすめです。
2017.11.27プラグインを使わずにWordPressをカスタマイズする場合、「functionsファイルにこのコードを追加しましょう」みたいなことが書かれていることがよくあります。このように何でもかんでもfunctions.phpにコードを追加しているとコードの量が多くなっ...
カテゴリータイプのタクソノミーの場合
タクソノミーをカテゴリーのようにしたい場合は下記のコードをひな形にしてください。
PHP
add_action( 'init' , 'create_category_taxonomy' ); |
function create_category_taxonomy(){ |
register_taxonomy( 'example_category' , |
以下、コードについてお話させていただきます。
'label' => 'タクソノミー名',
:タクソノミー名
- 日本語でタクソノミー名(分類)を入力します。
'public' => true,
:公開するかどうか
- これはタクソノミーを公開するかどうかの設定です。このままで大丈夫です。
- ‘hierarchical’ => true:階層をもたせるかどうか
- 階層を持たせるというのは、カテゴリのように「大カテゴリ」>「小カテゴリ」という形で親子関係をもつかどうかの設定です。ここではカテゴリーのようなタクソノミーを作成しているので「true」にします。
'example_category',
:タクソノミーのスラッグ
- 「example_category」のところをお好きなスラッグに置き換えてください。ただし、英小文字とアンダースコア「_」だけを使うこと、それから予約語を使ってはいけないというルールがあります。
2017.12.03タクソノミーやタームのスラッグ名など任意で名前をつけるときに使ってはいけない名前があります。WordPressのプログラムの中ですでに役割が決められてしまった名前、俗に言う「予約語」というものです。これらの名前をスラッグ名などに使用していしまうと原因が一切分か...
- ‘example_post_type’, // どの投稿タイプに追加するか
- タクソノミーを追加したい投稿タイプのスラッグを「example_post_type」のところに入力します。投稿に追加する場合は「post」、固定ページに追加する場合は「page」と入力します。カスタム投稿タイプに追加する場合は、カスタム投稿の作成時に付けたスラッグを入れましょう。
タグタイプのタクソノミーの場合
カテゴリーではなくて、タグのようなタクソノミーを作成したい場合は下記のコードを参考にしてください。
PHP
add_action( 'init' , 'create_tag_taxonomy' ); |
function create_tag_taxonomy(){ |
register_taxonomy( 'example_tag' , |
先ほどのカテゴリータイプとの違いは、'hierarchical'
がtrue
ではなくfalse
になっているという点だけです。他のコードは説明が重複するので割愛させていただきます。
カテゴリータイプとタグタイプを同時に追加する場合
「投稿」と同じようにカテゴリーのような分類とタグのような分類を2つ作りたいという場合は下記のコードをひな形にしてください。2つのタクソノミーの作成を1つの関数にコンパクトにまとめてあります。
PHP
add_action( 'init' , 'create_custom_taxonomy' ); |
function create_custom_taxonomy(){ |
register_taxonomy( 'example_category' , |
register_taxonomy( 'example_tag' , |
以上がカスタムタクソノミーの作成方法でした。