カスタム分類(カスタムタクソノミー)のカテゴリーとタグを作る方法をまとめておきます。
カスタム投稿タイプにつけられるカテゴリーやタグには、「デフォルト分類」に属するものと「カスタム分類(カスタムタクソノミー)」に属するものとがあります。
デフォルト分類に属するカテゴリーやタグは、もともとWordPressが用意してくれているもので、「WPカテゴリー・WPタグ」などとも言われます。これは、投稿(post)やカスタム投稿など全ての投稿タイプで共有して使うことが出来ます。しかしカスタム投稿タイプを作ると、WPカテゴリーやWPタグをは別に専用の新しいカテゴリーやタグを作りたいということがあります。こんな時はカスタム分類を使います。カスタム分類のカテゴリーやタグは、任意にいくつでも増やすことができます。
カスタム分類の追加方法1
まず、プラグインを使わずに追加する方法です。分かりやすくするために、カスタム投稿タイプを作成するコードも載せています。カスタム投稿タイプを作成するコード部分の説明は以下のページにまとめてあります。
任意の投稿タイプを追加できる-カスタム投稿タイプ- | ぱたこぼ-ブログ-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
//カスタム投稿タイプ add_action('init', 'custom_blog_init'); function custom_blog_init() { $labels = array( 'name' => _x('ブログ', 'post type general name'), 'singular_name' => _x('ブログ', 'post type singular name'), 'all_items' => __('投稿一覧'), ); $args = array( 'labels' => $labels, 'public' => true,//管理画面・サイトへの表示の有無 'publicly_queryable' => true, 'show_ui' => true, //管理画面のメニューへの表示の有無 'menu_position' => 5,//管理メニューでの表示位置 'query_var' => true, 'rewrite' => true,//パーマリンク設定 'capability_type' => 'post',//権限タイプ 'map_meta_cap' => true,//デフォのメタ情報処理を利用の有無 'hierarchical' => false,//階層(親)の有無 'menu_icon' => 'dashicons-admin-customizer',//アイコン画像 'supports' => array('title','editor','thumbnail','custom-fields','excerpt','trackbacks','comments','revisions','page-attributes'), 'taxonomies' => array( 'category', 'post_tag' ),//WPカテゴリー・WPタグ 'has_archive' => true//アーカイブの有無 ); register_post_type('blog',$args); } //カスタム分類(カスタムタクソノミー) function custom_blog_taxonomies() { //タクソノミー1 $labels = array( "name" => _x( "BLOGカテゴリー", "taxonomy general name" ), "singular_name" => _x( "BLOGカテゴリー", "taxonomy singular name" ), ); $args = array( "labels" => $labels, "public" => true, "hierarchical" => true,//true:カテゴリー・false:タグ "show_ui" => true,//管理画面のメニューへの表示の有無 "show_in_menu" => true, "show_in_nav_menus" => true,//「外観」>「メニュー」への表示の有無 "query_var" => true,//wp_queryでの使用の可否 "rewrite" => array( 'slug' => 'blog_cat', 'with_front' => true, ),//パーマリンクの設定 "show_admin_column" => false,//管理画面の投稿一覧への表示の有無 "show_in_rest" => false, "rest_base" => "", "show_in_quick_edit" => false,//クイック編集への表示の可否 ); register_taxonomy( "blog_cat", array( "blog" ), $args ); //タクソノミー2 $labels = array( "name" => _x( "BLOGタグ", "taxonomy general name" ), "singular_name" => _x( "BLOGタグ", "taxonomy singular name" ), ); $args = array( "labels" => $labels, "public" => true, "hierarchical" => false,//true:カテゴリー・false:タグ "show_ui" => true,//管理画面のメニューへの表示の有無 "show_in_menu" => true, "show_in_nav_menus" => true,//「外観」>「メニュー」への表示の有無 "query_var" => true,//wp_queryでの使用の可否 "rewrite" => array( 'slug' => 'blog_tag', 'with_front' => true, ),//パーマリンクの設定 "show_admin_column" => false,//管理画面の投稿一覧への表示の有無 "show_in_rest" => false, "rest_base" => "", "show_in_quick_edit" => false,//クイック編集への表示の可否 ); register_taxonomy( "blog_tag", array( "blog" ), $args ); } add_action( 'init', 'custom_blog_taxonomies' ); |
- ■関数名
- 「custom_blog_taxonomies」は関数名なので、任意の名前に変更してください。最後の行のadd_actionで呼び出していますので、そこも変更します。
- ■配列「labels」
- ここで設定している「BLOGタグ」などは管理画面で表示される名称なので分かりやすいものに変更して下さい。日本語なら単数形の名前も同じで大丈夫です。
- ■配列「args」
-
細かい設定ができます。配列「labels」もここで呼び出しています。
【hierarchical】- 階層(親)を持つかどうか。「true」だとカテゴリー、「false」だとタグになります。
【rewrite】- slugはパーマリンクの文字列で使用されます。
※上手く行かない場合は、「設定」>「パーマリンク設定」で一度「変更を保存」を押して下さい。内容は変えなくても大丈夫です。 - ■register_taxonomy関数
-
「blog_cat」はタクソノミー名なので、被らない任意のものに変更してください(英小文字とアンダースコアのみ32文字以内)。
使わない方がいい名前があるようです。
WordPressのカスタムタクソノミー(カスタム分類)設定方法 | 株式会社LIG「blog」のところは、このカスタム分類を利用する投稿タイプ名(カスタム投稿タイプ名/post/page/attachment/revision/nav_menu_itemなど)。
サンプルのコードだと、以下のように「ブログ」に「BLOGカテゴリー」「BLOGタグ」が追加されるはずです。
カスタム分類の追加方法2「Custom Post Type UI」
カスタム投稿タイプを作成するプラグイン「Custom Post Type UI」では、カスタム分類も簡単に作ることができます。
プラグインを有効化して、カスタム投稿タイプを作成したら、「CPT UI」>「タクソノミーの追加と編集」で必要な項目を入力してください。
「Custom Post Type UI」を使ったカスタム投稿タイプの作成についてはこちら
任意の投稿タイプを追加できる-カスタム投稿タイプ- | ぱたこぼ-ブログ-
- ■投稿タイプスラッグ(Taxonomy Slug)
- タクソノミー名。英小文字とアンダースコアのみ32文字以内。
使わない方がいい名前があるようです。
WordPressのカスタムタクソノミー(カスタム分類)設定方法 | 株式会社LIG - ■複数形(単数形)のラベル
- 管理画面で表示される名称。日本語なら単数形の名前も同じで大丈夫です。
- ■利用する投稿タイプ
- このカスタム分類を利用する投稿タイプ名を選択。
- ■階層(Hierarchical)
- 階層(親)を持つかどうか。「true」だとカテゴリー、「false」だとタグになります。
カスタム分類のタームを表示
設定したカスタム分類のタームを、サイトで表示する方法です。
カスタム分類でカテゴリーやタグを設定した場合、個々のカテゴリーやタグは、それぞれに「ID」「スラッグ」「名前」といった情報を持ちます。このような、タクソノミー(分類)が持つ個別の項目ないし項目に設定されている情報をタームと呼びます。
タームは次のよう方法で呼び出すことができます。
カスタム分類の全タームの取得
カスタム分類で設定した全てのタームを取得します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php //タームの取得 $terms = get_terms( 'blog_cat', 'get=all' ); //タームを出力 if(!empty($terms) && !is_wp_error($terms)){ ?> <ul> <?php foreach($terms as $term){ ?> <li>タームID:<?=$term->term_id?></li> <li>ターム名:<?=$term->name?></li> <li>スラッグ:<?=$term->slug?></li> <li>所属タクソノミー名:<?=$term->taxonomy?></li> <li>タームの説明:<?=$term->description?></li> <li>親のタームID(無ければ0):<?=$term->parent?></li> <li>項目が選択されている投稿数:<?=$term->count?></li> <li>タームのアーカイブURL:<?php echo get_term_link( $term->slug, 'blog_cat' ); ?></li> <?php } ?> </ul> <?php } ?> |
※「blog_cat」はタクソノミー名です。表示させたいカスタム分類のタクソノミー名に変更します。
関数リファレンス/get terms…指定されたカスタム分類に含まれるタームを取得
関数リファレンス/get term link…指定されたタームのアーカイブ(記事一覧)へのパーマリンクを取得
特定の投稿で選択されているタームの取得
記事編集画面でカテゴリーやタグを選択した場合に、その記事で選択されているカテゴリーやタグのターム情報だけをを取得できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php //タームの取得 $terms = wp_get_object_terms($post->ID, 'blog_cat'); //タームを出力 if(!empty($terms) && !is_wp_error($terms)){ ?> <ul> <?php foreach($terms as $term){ ?> <li>タームID:<?=$term->term_id?></li> <li>ターム名:<?=$term->name?></li> <li>スラッグ:<?=$term->slug?></li> <li>所属タクソノミー名:<?=$term->taxonomy?></li> <li>タームの説明:<?=$term->description?></li> <li>親のタームID(無ければ0):<?=$term->parent?></li> <li>項目が選択されている投稿数:<?=$term->count?></li> <li>タームのアーカイブURL:<?php echo get_term_link( $term->slug, 'blog_cat' ); ?></li> <?php } ?> </ul> <?php } ?> |
※「blog_cat」はタクソノミー名です。表示させたいカスタム分類のタクソノミー名に変更します。
関数リファレンス/wp get object terms…指定された投稿で選択されたタームを取得
関数リファレンス/get term link…指定されたタームのアーカイブ(記事一覧)へのパーマリンクを取得
カテゴリーの順序を変更「Category Order and Taxonomy Terms Order」
通常カテゴリーは登録した時の順序で並び、後からは変更できません。ループで表示する際にもこの順番が適用されるため、登録後に変更したいということがよくあります。この場合はプラグインが必要になります。
「Category Order and Taxonomy Terms Order」というプラグインは、WPカテゴリーだけでなく、カスタム分類のカテゴリーまで順序を入れ替えることが出来るので便利です。有効化した後、管理画面メニューのカテゴリー項目の下に「Taxonomy Order」という項目が追加されるので、そこでカテゴリー項目名をドラッグするだけです。複数のカスタム分類を併用している場合も対応します。