WordPress:タームのアーカイブページで、タイトルやスラッグなどの各種情報を取得・表示する方法

WordPress:タームのアーカイブページで、タイトルやスラッグなどの各種情報を取得・表示する方法

特定のタームに属している記事を表示するアーカイブページ(主に使用されるのはtaxonomy.phptaxonomy-{taxonomy}.phpなど)で、タイトルやスラッグといったそのターム固有の情報表示や装飾などによく利用されると思う各種情報を取得・表示する方法です。

WordPress:タームのアーカイブページで、タイトルやスラッグなどの各種情報を取得・表示する方法 目次

  1. タームタイトル
  2. タームディスクリプション
  3. タームスラッグ
  4. タームID
  5. その他の情報も含めて、まとめて取得する
    1. 記事数を表示
    2. 親タームか子タームの判断
    3. 親ターム名を表示

1. タームタイトル

現在表示されているタームタイトルを表示させたい場合は下記のように記述します。

PHP

single_term_title();

また、引数付きで記述することでタームタイトル前に任意のテキストを表示することができます。
例えば、「お知らせ」というタームタイトルのページで下記のように記述することで「ターム:お知らせ」のように表示されます。

PHP

single_term_title( 'ターム:' );

そのまま表示させずに一旦変数などに格納したり手を加えたい場合は、下記のように第2引数でfalseを指定します。

PHP

$current_term_title = single_term_title( '', false );
echo '<h1>' . $current_term_title . '</h1>';

目次へ

2. タームディスクリプション

現在表示されているタームの「説明」項目に入力されている内容を表示させたい場合は下記のように記述します。

PHP

echo term_description();

ただし、この記述での表示させた場合は自動的にp要素で括られた形になります。
p要素が邪魔なときや別の要素で括られた状態で表示したい場合は、後述するget_queried_object()を用いて情報を取得・表示させる方法を利用する、もしくは以下のような方法で p要素を取り除きます。

strip_tagsを使う

文字列からHTMLタグを取り除くstrip_tagsを利用して下記のように記述することで、p要素に括られていない状態で表示できます。
ただし、この方法は何らかのカスタマイズを行なっていて「説明」内にHTMLを記述しているとそれらも取り除かれてしまうので、その場合は引数で取り除かないタグ指定をしたり別の方法をとる必要があります。

PHP

echo strip_tags( term_description() );

フィルターフックを使う

同じ挙動を複数箇所(複数テンプレート)で行いたい場合やすべてのterm_description()使用箇所で不要であれば、フィルターフックを使って下記のように記述すればまとめてp要素に括られないようにできます。
functions.phpではなく使用しているテンプレート内でも可)

functions.php

remove_filter( 'term_description', 'wpautop' );

目次へ

3. タームスラッグ

現在表示されているタームのスラッグを表示させたい場合は下記のように記述します。

PHP

echo $term;

目次へ

4. タームID

現在表示されているタームのIDを表示させたい場合は下記のように記述します。

PHP

echo get_queried_object_id();

目次へ

5. その他の情報も含めて、まとめて取得する

上で紹介してきたのはいずれも各情報をひとつずつ取得・表示させるものでしたが、これらをまとめて取得したいとかその他の情報も取得したい場合はget_queried_object()を利用します。
例えば、タイトル・ディスクリプション・スラッグ・IDであれば、それぞれ下記のように記述して取得することができます。

PHP

$queried_object = get_queried_object();

// タイトル
$term_title = $queried_object->name;

// ディスクリプション
$term_description = $queried_object->description;

// スラッグ
$term_slug = $queried_object->slug;

// ID
$term_id = $queried_object->term_id;

その他取得できる情報の利用例として使用頻度が高そうなものだと以下のようなものがあります。

5-1. 記事数を表示

現在表示されているタームに属している記事数を取得・表示します。
条件分岐を組み合わせれば、記事があるときとないときで表示の有無や内容を変更することも可能です。

PHP

$queried_object = get_queried_object();
$term_count = $queried_object->count;
echo '<p>' . $term_count . '件の記事があります。</p>';

5-2. 親タームか子タームの判断

現在表示されているタームが子タームだった場合(最上位のタームではない場合)にのみ、何かしらのテキストや情報を表示させるなどのカスタマイズをする際に使えます。

PHP

$queried_object = get_queried_object();
$term_parent = $queried_object->parent;
if ( $term_parent ) {
  echo 'これは子タームです。';
}

5-3. 親ターム名を表示

現在表示されているタームが子タームだった場合(最上位のタームではない場合)に親ターム名を表示させます。

PHP

$queried_object = get_queried_object();
$term_parent = $queried_object->parent;
if ( $term_parent ) {
  $term_parent_object = get_term_by( 'id', $term_parent, $taxonomy );
  echo '<p>親ターム:' . $term_parent_object->name . '</p>';
}

また、例えば親タームを名前だけでなくリンク付きで表示させたいときは下記のように記述します。

PHP

$queried_object = get_queried_object();
$term_parent = $queried_object->parent;
if ( $term_parent ) {
  $term_parent_object = get_term_by( 'id', $term_parent, $taxonomy );
  echo '<p>親ターム:<a href="' . get_term_link( $term_parent, $taxonomy ) . '">' . $term_parent_object->name . '</a></p>';
}

ただし、上記はいずれも直近の親タームの情報を取得・表示しているものになるので、例えば孫タームのページで最上位のターム情報を取得・表示したいとなってくるとget_ancestors()を利用するなど別途処理が必要になってきます。

目次へ

Close the search window,
please press close button or esc key.