WordPressのカスタムタクソノミーを作成してみる

以前作成したカスタム投稿にカスタムタクソノミーを設定してみます。

サンプルコード

カスタムタクソノミーにはカテゴリー形式とタグ形式の2種類に分類できます。
まずはカテゴリー形式のカスタムタクソノミーの作成と、いくつかオプションを設定してみます。

functions.php

以前の記事のコードに追加しています。

function create_posttype() {
  register_post_type('cly_item',
    array(
      ~ 省略 ~
    )
  );

  // カスタムタクソノミーを作成(カテゴリー)
  register_taxonomy('cly_item_cat', 'cly_item',
    array(
      'label'                 => 'カテゴリー', // ラベルを指定。個別に指定したい場合は'labels'を使う
      'public'                => true, // タクソノミーは(パブリックに)検索可能にするかどうか。
      'show_in_quick_edit'    => true, // 投稿のクイック編集でこのタクソノミーを表示するかどうか
      'show_admin_column'     => true, // 投稿一覧のテーブルにこのタクソノミーのカラムを表示するかどうか
      'description'           => '商品のカテゴリーです', // タクソノミーの簡潔な説明
      'hierarchical'          => true, // trueの場合はカテゴリーのような階層あり(子を持つ)タクソノミー、falseの場合はタグのような階層化しないタクソノミーになる
      'rewrite'               => array( // タクソノミーのパーマリンクのリライト方法を変更
        'slug' => 'items', // パーマリンク構造のスラッグを変更
        'with_front' => false, // パーマリンクの前にfrontベースを入れるかどうか
        'hierarchical' => true, // 階層化したURLを使用可能にするかどうか
      ),
    )
  );
}
add_action('init', 'create_posttype');

管理画面を確認してみると、カテゴリーが追加できていることが確認できました。

register_taxonomy($taxonomy, $object_type, $args) タクソノミーの追加や上書きをする関数。
$taxonomy: タクソノミーの名前を英小文字と_で32文字以下で指定。
$object_type: タクソノミーオブジェクトのオブジェクト名を指定。
$args: オプションを指定。

カスタムタクソノミーをカテゴリー形式にするかタグ形式にするかはhierarchicalで設定します。
カテゴリーの時はtrueにしましたが、falseにすることでタグ形式にできます。

functions.php

function create_posttype() {
  register_post_type('cly_item',
    array(
      ~ 省略 ~
    )
  );

  // カスタムタクソノミーを作成(カテゴリー)
  register_taxonomy('cly_item_cat', 'cly_item',
    array(
      ~ 省略 ~
    )
  );

  // カスタムタクソノミーを作成(タグ)
  register_taxonomy('cly_item_tag', 'cly_item',
    array(
      'label' =>'タグ',
      'hierarchical' => false,
    )
  );
}
add_action('init', 'create_posttype');

カテゴリーに合わせてタグも追加することができました。

 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年12月
1234567
891011121314
15161718192021
22232425262728
293031