WordPress

カスタムタクソノミーをプラグインを使わずに追加する方法

ここでは、プラグインを使わずにfunctionファイルにコードを記入してカスタムタクソノミーを増やす方法についてお話します。

コンテンツ

タクソノミーとは

タクソノミーを私なりに言葉にするなら「分類軸」とか「分類項目」という表現が良いのではないかと思います。WordPressの「投稿」にもあらかじめ「カテゴリー」と「タグ」というタクソノミーが付いています。カスタムタクソノミーというのは、このような分類軸を追加する機能です。

具体的にどういうときに追加が必要なのかというと、不動産サイトが良い例です。物件選びの分類軸って、「エリア」「家賃」「間取り」「こだわり条件」など、ひとつのカテゴリにまとめることのできない切り口が複数ありますよね。このようなときにカテゴリ分類を増やすのです。

カスタムタクソノミーの作り方

カスタムタクソノミーはカテゴリのような階層(親子関係)をもった形でも作れますし、階層を持たないタグのような形でも作れます。カスタムタクソノミーを作るにはコードをfunction.phpに追加するかインクルードさせます。個人的にはインクルードさせる方法がおすすめです。

カテゴリータイプのタクソノミーの場合

タクソノミーをカテゴリーのようにしたい場合は下記のコードをひな形にしてください。

PHP

/* カテゴリータイプのタクソノミーを作成 */
add_action('init', 'create_category_taxonomy');
function create_category_taxonomy(){
  $args = array(
    'label'              => 'タクソノミー名',     // タクソノミー名
    'public'             =>  true,               // 公開するかどうか
    'hierarchical'       =>  true                // 階層を持たせるかどうか
  );
  register_taxonomy(        'example_category',  // タクソノミーのスラッグ
                            'example_post_type', // どの投稿タイプに追加するか
                             $args);
}

以下、コードについてお話させていただきます。

'label' => 'タクソノミー名',:タクソノミー名
日本語でタクソノミー名(分類)を入力します。
'public' => true,:公開するかどうか
これはタクソノミーを公開するかどうかの設定です。このままで大丈夫です。
‘hierarchical’ => true:階層をもたせるかどうか
階層を持たせるというのは、カテゴリのように「大カテゴリ」>「小カテゴリ」という形で親子関係をもつかどうかの設定です。ここではカテゴリーのようなタクソノミーを作成しているので「true」にします。
'example_category',:タクソノミーのスラッグ
「example_category」のところをお好きなスラッグに置き換えてください。ただし、英小文字とアンダースコア「_」だけを使うこと、それから予約語を使ってはいけないというルールがあります。
‘example_post_type’, // どの投稿タイプに追加するか
タクソノミーを追加したい投稿タイプのスラッグを「example_post_type」のところに入力します。投稿に追加する場合は「post」、固定ページに追加する場合は「page」と入力します。カスタム投稿タイプに追加する場合は、カスタム投稿の作成時に付けたスラッグを入れましょう。

タグタイプのタクソノミーの場合

カテゴリーではなくて、タグのようなタクソノミーを作成したい場合は下記のコードを参考にしてください。

PHP

/* タグタイプのタクソノミーを作成 */
add_action('init', 'create_tag_taxonomy');
function create_tag_taxonomy(){
  $args = array(
    'label'              => 'タクソノミー名',     // タクソノミー名
    'public'             =>  true,               // 公開するかどうか
    'hierarchical'       =>  false               // 階層を持たせるかどうか
  );
  register_taxonomy(        'example_tag',       // タクソノミーのスラッグ
                            'example_post_type', // どの投稿タイプに追加するか
                             $args);
}

先ほどのカテゴリータイプとの違いは、'hierarchical'trueではなくfalseになっているという点だけです。他のコードは説明が重複するので割愛させていただきます。

カテゴリータイプとタグタイプを同時に追加する場合

「投稿」と同じようにカテゴリーのような分類とタグのような分類を2つ作りたいという場合は下記のコードをひな形にしてください。2つのタクソノミーの作成を1つの関数にコンパクトにまとめてあります。

PHP

/* カスタムタクソノミーを作成 */
add_action('init', 'create_custom_taxonomy');
function create_custom_taxonomy(){

/* カテゴリタイプ */
  $args = array(
    'label'              => 'タクソノミー名1',   // タクソノミー名
    'public'             =>  true,               // 公開するかどうか
    'hierarchical'       =>  true                // 階層を持たせるかどうか
  );
  register_taxonomy(        'example_category',  // タクソノミーのスラッグ
                            'example_post_type', // どの投稿タイプに追加するか
                             $args);

/* タグタイプ */
  $args = array(
    'label'              => 'タクソノミー名2',   // タクソノミー名
    'public'             =>  true,               // 公開するかどうか
    'hierarchical'       =>  false               // 階層を持たせるかどうか
  );
  register_taxonomy(        'example_tag',       // タクソノミーのスラッグ
                            'example_post_type', // どの投稿タイプに追加するか
                             $args);
}

以上がカスタムタクソノミーの作成方法でした。

最近の記事

  1. CSS

    CSS|中央寄せが効かないときは・・・
  2. CSS

    要素の配置が簡単に決まるFlexboxの使い方
  3. WordPress

    WordPressの立ち上げからサイト構築までの初期手順
  4. CSS

    レスポンシブウェブデザインの基本|メディアクリエリの設定
  5. CSS

    擬似クラス「:first-child」「:last-child」はどうして効かな…
PAGE TOP