Into the Program

【WordPress】カスタム投稿タイプのタクソノミー名を取得する

Image

カスタム投稿タイプでタクソノミー名を取得する方法のご紹介です。

タームの情報ではなくタクソノミーそのもののタクソノミー名を取得することが目的です。簡単に実装できるだろうと考えていたら思いの外情報が少なくて……。

ターム名やタームスラッグを取得する方法はすぐに見つかるのですが、タクソノミー名を取得するための情報がほとんどない状況でした。(そもそもタクソノミー名が必要になる場面が少ないのだと思います。)

そのため実装までに結構な時間を要しましたので、未来の自分に向けてカスタム投稿タイプの構成例と、タクソノミーページ、シングルページでのタクソノミー名の取得方法を簡単にまとめています。

これからWordpressを構築される方で、タクソノミー名の取得方法を検索されている方の参考になれば幸いです。

本記事の内容

  • カスタム投稿タイプの構成例
  • タクソノミーページでタクソノミー名を取得する
  • シングルページでタクソノミー名を取得する

では、解説していきます。

カスタム投稿タイプの構成例

下記は実際にタクソノミー名を取得する際に使用したカスタム投稿タイプの内容です。(名称は変更しています。)

」というカスタム投稿タイプは「漫画」、「小説」、「雑誌」という3つのタクソノミーを持っており、各タクソノミーはそれぞれ独自のタームを持っています。

わかりやすく図で表すと、下記のようなイメージになります。

カスタム投稿タイプ|タクソノミー|ターム
----------------------------------------
本|漫画|漫画名①
    |漫画名②
    |漫画名③
    
  小説|小説名①
    |小説名②
    |小説名③
    
  雑誌|雑誌名①
    |雑誌名②

タクソノミーは3つに分かれていますが、登録されているアイテムは複数のタクソノミーに属している場合があり、その場合は属しているタクソノミー名をすべて出力する必要があります。

もう少し詳しくご説明すると「漫画①」というタームと「雑誌名②」に「〇〇〇〇第1話」のような同じアイテムが登録されているケースがあり、そういった場合は「漫画」と「雑誌」というタクソノミー名を取得して出力する必要があります。

上記を考慮して、タクソノミーページとシングルページでタクソノミー名を取得します。

タクソノミーページでタクソノミー名を取得する

タクソノミーページでタクソノミー名を取得します。クエリオブジェクトからタクソノミースラッグを取得して、タクソノミー情報を取得します。タクソノミー情報からラベルを取り出すことでタクソノミー名を取得することができます。

taxonomy.php

<?php

//クエリオブジェクト取得
$query_object = get_queried_object();
//タクソノミースラッグ取得
$taxonomy_slug = $query_object->taxonomy;
//タクソノミー情報取得
$taxonomy = get_taxonomy($taxonomy_slug);
//タクソノミー名取得
$taxonomy_name = $taxonomy->label;

以上がタクソノミーページでタクソノミー名を取得する方法です。

シングルページでタクソノミー名を取得する

シングルページでタクソノミー名を取得します。get_the_taxonomiesでタクソノミースラッグを取得して、get_taxonomyでタクソノミー情報を取得します。属しているタクソノミーが単数の場合と複数の場合を想定してサンプルを用意しています。使いやすい方で構築して頂ければと思います。

single.php(単数)

<?php

//タクソノミースラッグ取得(単数)
$taxonomy_slug = array_keys(get_the_taxonomies());
//タクソノミー情報取得
$taxonomy = get_taxonomy($taxonomy_slug[0]);
//タクソノミー名取得
$taxonomy_name = $taxonomy->label;

single.php(複数)

<?php

//タクソノミースラッグ取得(複数)
$taxonomy_slugs = array_keys(get_the_taxonomies());

foreach($taxonomy_slugs as $taxonomy_slug){
  //タクソノミー情報取得
  $taxonomy = get_taxonomy($taxonomy_slug);
  //タクソノミー名取得
  $taxonomy_name = $taxonomy->label;
}

以上がシングルページでタクソノミー名を取得する方法です。

最後に

本記事で使用したWordpressの関数の詳細リンクをご紹介します。もう少し詳しく知りたい!という方は下記のリンクから仕様を読んでいただければと思います。

get_the_taxonomies

get_queried_object

get_taxonomy

以上、Wordpressでカスタム投稿タイプのタクソノミー名を取得する方法のご紹介でした!

SHARE