[wordpress] カスタムタクソノミーを使うにはどうすればいいか

前に、カスタム投稿タイプを使うにはどうすればいいかという話を書きました。ここでは、このカスタム投稿タイプに対して、タグやカテゴリーのような記事を分類する機能をつける、カスタムタクソノミーについて書いていきたいと思います。

カスタムタクソノミーとは?

カスタム投稿タイプを使うと、postやpageといった既存の投稿タイプに加えて、オリジナルの投稿タイプを作ることが可能になります。投稿タイプをカスタマイズできるというメリットがある一方、postで使っていたタグやカテゴリーが使えなくなるというデメリットがあります。

これでは、とても不便ですね。なので、オリジナルの分類機能を追加することができるようになっています。それが、カスタムタクソノミーと呼ばれるものです。タクソノミーというのは、「分類基準」や「分類学」などという意味がありますが、wordpressではタグやカテゴリーのように、記事を分類するもの、という意味で使っています。

カスタムタクソノミーを使う

カスタムタクソノミーを使うには、下のプログラムをfunctions.phpに追加すれば、最低限のことができます。

add_action('init', 'my_register_taxonomy', 0);
function my_register_taxonomy(){
  $args = array(
    'public' => true
    , 'label'  => '著者'
  );
  register_taxonomy('writer', 'book', $args);
}

カスタム投稿タイプを使うときと似てますね。上の「my_register_taxonomy」というのは、自分で好きな名前に設定します。同じなら何でもいいです。タクソノミーの登録は、register_taxonomyの部分で行っています。

register_taxonomyの1つ目の引数は、カスタムタクソノミーの名前ですね。2つ目の引数は、どのカスタム投稿タイプにタクソノミーを追加するかを指定します。ここでは、事前に作ったbookという名前の投稿タイプに追加しようとしています。そして、3つ目がカスタムタクソノミーの様々な設定です。

カスタムタクソノミーの設定は、上のようにpublicとlabelだけは設定した方がいいと思います。もしカテゴリーのように親子関係を設定したければ、hierarchicalをtrueにします。他の項目については、wordpressの公式サイトにまとめられているのでチェックしてみましょう。

関数リファレンス/register taxonomy - WordPress Codex 日本語版

ちなみに、カスタム投稿タイプを作ってそれを分類したい場合には、必ずカスタムタクソノミーを使う必要がありますが、カスタムタクソノミーをpostやpageに適用することもできます。postに設定されているタグやカテゴリーに追加できるんですね。普通はそんなことをする必要はないのですが、タグをグルーピングするといった使い方ができます。

例えば、上の例で、「register_taxonomy('writer', 'post', $args);」と書いたとしましょう。すると、管理画面の投稿ページに、writerというカスタムタクソノミーが追加されます。タグとは別の切り口で分類したい場合、タグをグルーピングしたい場合は、こうしたpostへのカスタムタクソノミーの設定で対応できます。

ちなみに、カスタムタクソノミーを含むページは、「ブログのURL/カスタムタクソノミー名/ターム名」または「ブログのURL/?カスタムタクソノミー名=ターム名」となります。カスタムタクソノミーに対しても、必要に応じてアーカイブページや個別ページを作成することになります。

前の記事:
[wordpress] カスタム投稿タイプを使うにはどうすればいいか
次の記事:
[wordpress] カスタムフィールドを追加する方法