【WordPress】カスタムタクソノミーの作り方(プラグインあり/なし)と使い方(表示方法)

WordPressには、「カテゴリー」と「タグ」というものがあり、これらのことを「タクソノミー」といいます。

タクソノミーは記事を分類するためのもので、オリジナルの分類(カスタムタクソノミー)を作ることもできます。

この記事では、タクソノミーとタームについての説明、カスタムタクソノミーの作り方(プラグインを使う場合、使わない場合)と使い方を紹介します。

タクソノミーに関しては説明が難しいので、用語が間違っている場合があります。
スポンサーリンク

タクソノミー・タームとは

タクソノミーとは

タクソノミーとは分類のことで、カスタムタクソノミーとはオリジナルの分類のことです。

メインブログを例にして説明します。
このブログは旅と暮らしをテーマにしたブログです。

大カテゴリーは「旅のこと」、「暮らしのこと」のふたつで、それぞれの中にいくつかの小カテゴリーがあります。

これとは別に、「地域」というカスタムタクソノミーを作っています。

■タクソノミー(カテゴリー)
unusual
|
|-旅のこと
| |-旅行記
| |-旅の準備
| |-旅の情報
| |-宿情報
| |-旅のコラム
|
|-暮らしのこと
|-料理
|-雑記
|-暮らしのコラム
■カスタムタクソノミー(地域)
unusual
|
|-アジア
|  |-東南アジア
|  |  |-タイ
|  |  |-カンボジア
|  |  |-ベトナム
|  | ・
|  | ・
|  |-南アジア
|  |  |-インド
|  |  |-パキスタン
|  | ・
|  | ・
|
|-ヨーロッパ
|  |-東ヨーロッパ
|  |  |-ウクライナ
|  |  |-ポーランド
|  |  |-ハンガリー
|  | ・
|  | ・

タームとは

タームとは、タクソノミー内の項目のことです。

上の例で言うと、カスタムタクソノミー[地域]の中にターム[東南アジア]やターム[タイ]があるということです。

タクソノミーとタームのまとめ

Wordpressには、デフォルトで「カテゴリー」、「タグ」という【タクソノミー】が用意されています。

そして、「カテゴリー」、「タグ」以外に自分で作った【タクソノミー】を【カスタムタクソノミー】と呼びます。

「カテゴリー」と「タグ」は全く別のもののように感じますが、実は階層式(親子階層がある)のタクソノミーか、非階層式(親子階層がない)のタクソノミーかの違いしかありません。

なのでカスタムタクソノミーを作る際も、階層式(カテゴリー風)か非階層式(タグ風)かを選ぶことができます。

上の例で言うと、カスタムタクソノミー[地域]は階層式(カテゴリー風)のカスタムタクソノミーだということになります。

【階層とは】
タームに親子階層があるタクソノミーのことを階層式といいます。
タクソノミー(カテゴリー)を例にすると、親ターム「旅のこと」の中に、子ターム「旅行記」があるので、「カテゴリー」は階層式のタクソノミーだということです。

プラグインを利用したカスタムタクソノミー・タームの作り方

ここからは、カスタムタクソノミーの作り方です。
まずはプラグインを使う方法を説明します。

プラグイン(Custom Post Type UI)の導入

Custom Post Type UIというプラグインをインストールします。

Custom Post Type UIは「カスタム投稿タイプ」と「カスタムタクソノミー」を追加・管理するプラグインですが、今回は「カスタム投稿タイプ」には触れません。

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

Custom Post Type UIをインストールすると、Wordpress管理画面左側に[CPT UI]というメニューが追加されます。

[タクソノミーの追加と編集]をクリックします。

[タクソノミーの追加と編集]画面が表示されます。

この画面でカスタムタクソノミーを追加します。

今回は、上でも挙げた「地域」というタクソノミーを例にします。

 

  • タクソノミースラッグ:このタクソノミーをWordpress内で利用するときに使う名前です。具体的に言うと、PHPでこのタクソノミーの名前や記事一覧を表示するときや、タクソノミーページのURLに使われます。
  • 複数形のラベル:タクソノミーの表示名です。
  • 利用する投稿タイプ:どの投稿タイプで利用するかを選択します。通常は「投稿」で良いと思います。今回の記事では触れませんが、「カスタム投稿タイプ」と合わせて使う場合はここで選択してください。

追加ラベルには何も書かなくてもOKです。

設定欄にある階層をTrueにすると、階層式のタクソノミー(カテゴリー風)となります。
Falseにすると、非階層式タクソノミー(タグ風)となります。

記入・設定をしたら、[タクソノミーを保存]をクリックします。
これでカスタムタクソノミーの作成は完了です。

タームの作り方

カスタムタクソノミーを作成すると、Wordpress管理画面左側の[投稿]メニュー内に、「カテゴリー」、「タグ」と並んでカスタムタクソノミーが表示されます。

【デフォルト】

【カスタムタクソノミー[地域]を追加した場合】

「地域」をクリックすると、カスタムタクソノミー[地域]のタームを追加するページが表示されます。

階層をTrueに設定したので、親タームを選択する項目も表示されています。

画面右側で、追加したタームを確認することができます。
通常のカテゴリーと操作は同じです。

プラグインを利用しないカスタムタクソノミー・タームの作り方

WordpressやPHPに慣れている人にとっては、プラグインを利用しないカスタムタクソノミー・タームの作り方のほうが手軽だと思います。

テーマエディターで「functions.php」に以下のコードを貼り付けるだけで、カスタムタクソノミーを作ることができます。

 

////****カスタムタクソノミー追加
function register_custom_taxes() {
$labels = array(
“name” => __( “タクソノミー名”, “taxonomy general name” ),
“singular_name” => __( “”, ‘taxonomy singular name’ ),
);
$args = array(
“labels” => $labels,
“hierarchical” => true,
“rewrite” => array( ‘slug’ => ‘タクソノミーのスラッグ’),
“show_in_rest” => true,
);
register_taxonomy( “タクソノミーのスラッグ”, array( “post” ), $args );
}
add_action( ‘init’, ‘register_custom_taxes’ );

 

「タクソノミー名」、「タクソノミーのスラッグ」に任意のテキストを入れてください。

「”hierarchical” => true」という箇所を「true」にすると階層式に、「false」にすると非階層式になります。

カスタムタクソノミーとタームの使い方

サイドバーに表示する

タクソノミー[地域]をサイドバーに表示します。

プラグインなしでもできますが、「List Custom Taxonomy Widget」というプラグインを使うと簡単です。

List Custom Taxonomy Widgetは、任意のタクソノミーのターム一覧をウィジェットに表示することができるプラグインです。

List Custom Taxonomy Widgetをインストールし、[外観]ー[ウィジェット]でウィジェット設定画面に進み、サイドバーにList Custom Taxonomy Widgetを追加します。

 

  • Select Taxonomy:どのタクソノミーを表示するか
  • Show Post Counts:ターム名の後に投稿数を表示するかどうか
  • Show Hierarchy:階層表示するかどうか
  • Show Empty Terms:空(投稿数0)のタームを表示するかどうか
  • Order By:表示順
  • Exclude:除外するタームを設定
  • Only Show Children of:特定のタームの子タームのみ表示
  • Display as Dropdown:ドロップダウン表示するかどうか

実際にサイドバーに表示した[地域]が↓こちらです。
実物はメインブログを確認してください。

国旗を表示する方法はこちら→国別カテゴリーに国旗アイコンを表示する方法

記事ページに表示する

私が使っているWordpressテーマSimplicityでは、記事ページのタイトル下にカテゴリーが表示されます。
(→現在はCocoonというテーマを使っています)

ここにカスタムタクソノミー(地域)を表示する方法を説明します。

Simplicityでは、この部分は「category-link.php」というテーマファイルに記述されています。

親テーマの「category-link.php」をコピーして、内容を編集します。

<?php //インデックスページや投稿ページで表示されるカテゴリーリンク
if ( is_category_visible() && //カテゴリを表示する場合
 get_the_category() ): //投稿ページの場合?>
<span class="category"><span class="fa fa-folder fa-fw"></span><?php the_category('<span class="category-separator">, </span>') ?></span>
<?php endif; //is_category_visible?>

この下に、以下の記述を追記します。

<!--タクソノミー表示//////////////////////////////////////-->
<span class="category">
<?php echo get_the_term_list($post->ID, region, '<br><span class="fa fa-globe fa-fw"></span>:', ' , '); ?>
</span>
<br>
<!--タクソノミー表示//////////////////////////////////////-->

見た目がカテゴリーと同じになるように、class=”category”を指定しています。

<span class=”fa fa-globe fa-fw”></span>はFontAwesomeのアイコン()なので、適当に変えて下さい。

編集が終わったら、FTPクライアントソフトなどでサーバーにアップロードして下さい。

さいごに

タクソノミーの概念は難しくて、私も最初はあまり理解できませんでした。
今もきちんと理解できているのか、正しい使い方をしているのか分かりませんが、出来る限り分かりやすくまとめたつもりです。

同じように難しいと感じている方の参考になれば幸いです。

Comments

タイトルとURLをコピーしました