WordPressのタームの取得方法と表示方法まとめ

今回はWordPressでタームを取得する方法と表示方法を解説します。

ターム一覧を表示する場合やアーカイブ・カテゴリーページなどでターム名を表示したい場合に役立つと思います。

 

タームとは?

タームとは、かなりざっくりいうとカスタムタクそのミーのタグみたいなものです。

カスタム投稿タイプに当てられるカテゴリーをカスタムタクソノミーと呼びますが、カスタム投稿タイプに当てられるタグのようなものがタームです。

役割や通常のタグと同じです。カテゴリーよりも細かく分ける場合などに使う場合が多いですね。

 

タームの情報を表示する方法

カスタムタクソノミーに追加されたタームを表示するには以下のコードを追加します。

カスタムタクソノミーのスラッグはinfo-catとしておきます。

<?php
$terms = get_terms( 'info-cat');
foreach ( $terms as $term ){
  echo '<a href="'.get_term_link($term->slug, 'info-cat').'">'.$term->name.'</a>'; //タームのリンク
}
?>

 

解説

取得したタームからは名前やアーカイブリンクなど、様々な情報を取得できます。

まずはターム名を取得しましょう。

$term->name;

 

もしタームIDを取得したい場合は以下のコードで取得することが出来ます。

$term->term_id;

 

タームのスラッグも同じ要領で取得します。

$term->slug;

 

タームのアーカイブリンクを取得するにはget_term_link()を使います。

第一引数にタームのスラッグ、第二引数にカスタム投稿タイプのスラッグを指定します。

リンクとして使うので<a>のhref属性に指定しておきましょう。

get_term_link($term->slug, 'info-cat');

 

他にも、そのタームの投稿数を指定することもできます。

$term->count

 

taxonomy.phpでターム情報を取得し、表示する

タームのアーカイブのページではタームのスラッグやタイトル、ディスクリプションなどを表示できます。

 

タームアーカイブページでタームIDを取得する

taxonomy.phpでタームIDを取得するにはget_queried_object_id()を使います。

 

<?php
$term_id = get_queried_object_id(); // タームIDの取得
echo $term_id; // タームIDの表示
?>

 

 

 

タームスラッグを表示

タームスラッグの表示は$termをechoで出力するだけです。専用の関数を使わずに出力できますね。

 

<?php echo $term ?>

 

 

 

タームタイトルを表示

タームタイトルを表示するにはsingle_term_title()を使用します。

 

<?php single_term_title(); ?>

 

 

 

また、特定の文字列の後にタイトルを表示したい場合は以下のように引数に文字列を指定します。

 

<?php single_term_title('現在表示しているカテゴリは'); ?>

 

 

 

タームディスクリプションを表示

タームディスクリプションを表示するにはterm_description() をechoと組み合わせて使います。

<?php echo term_description(); ?>

 

また、term_description()は自動で<p>を作成してしまうため、strip_tags() を使ってタグを削除することもできます。

 

<?php echo strip_tags(term_description()); ?>

 

 

 

ターム情報をまとめて表示

これまで説明してきたようなターム情報をまとめて表示したいときは、適当な変数にget_queried_object() を格納して使用します。

表示したい情報はechoを使って出力しましょう。

 

<?php
$term_object = get_queried_object(); // タームオブジェクトを取得
echo $term_object->slug; // タームスラッグ
echo $term_object->name; // タームタイトル
echo $term_object->description; // タームディスクリプション
?>

 

 

 

single.phpでターム情報を表示する

single.php で表示している投稿に関連するタームを表示する場合は get_the_terms() を使用します。
以下の例では、カスタムタクソノミーのスラッグが info-cat の場合に、以下のコードを記述します。

 

<?php
$terms = get_the_terms($post->ID,'info-cat');
foreach( $terms as $term ) {
echo $term->term_id; // タームID
echo $term->name; // 名前
echo $term->slug; // スラッグ
echo $term->term_group; // タームグループ
echo $term->term_order; // タームオブジェクト
echo $term->term_taxonomy_id; // タームタクソノミーID
echo $term->taxonomy; // タクソノミー
echo $term->description; // ディスクリプション
echo $term->parent; // 親
echo $term->count; // カウント
echo $term->object_id; // オブジェクトID
}
?>

 

 

 

解説

single.phpで表示している投稿に関連するタームを表示する場合は以下のようにコードを記述します。スラッグ名(info-catの部分)は各自変更してください。

 

<?php
$terms = get_the_terms($post->ID,'info-cat');
foreach( $terms as $term ) {
echo $term->name;
}
?>

 

 

 

また、アーカイブリンクを表示するには以下のようなコードを記述します。

$terms = get_the_terms($post->ID,'info-cat');
foreach( $terms as $term ) {
echo '<a href="'.get_term_link($term->slug, 'info-cat').'">'.$term->name.'</a>';
}
?>

 

 

 

タームのスラッグからIDを取得して表示する

タームの情報を表示する別の方法として、スラッグからIDを取得する方法もあります。

以下のコードではタームのスラッグ名がhogehoge、カスタムタクソノミーのスラッグがinfo-catとします。

 

<?php
$term = get_term_by('slug', 'hogehoge', 'info-cat');
echo $term->term_id; // タームIDを表示
?>

 

 

 

ターム一覧を表示

カスタムタクソノミーに関連するタームを一覧で表示する方法はいくつかありますが、今回は wp_list_categories() を使った表示方法を紹介します。

以下のコードではカスタムタクソノミーがinfo-catとします。

<ul>
<?php wp_list_categories('title_li=&taxonomy=info-cat'); ?>
</ul>

 

 

 

wp_list_categories() を使うと<li>タグを使ったリスト形式での表示になります。

また、タームの投稿数を表示する場合は show_count を加えます。

以下のコードでは1つだけ表示しています。初期値は非表示(0)です。

<ul>
<?php wp_list_categories('title_li=&show_count=1&taxonomy=info-cat'); ?>
</ul>

 

まとめ

他にもまだまだタームに関することは色々ありますが、コードを書かなくてもプラグインで対処した方が簡単なこともあります。

例えば Advanced Custom Fields というプラグインを使って、タームにカスタムフィールドを追加することができるし、タームの順番を並び替えることができる Intuitive Custom Post Order というプラグインもあります。

カスタムタクソノミーやタームを知っているとさらにWordPressをステップアップできるし、カスタマイズの幅も広がるので知っていて損はないと思います。