当ブログもそうですが大抵の WordPress テーマでは、記事ページにその記事が属するカテゴリーをリンク付きで表示してくれると思います。でも、カスタムタクソノミーはそうはいきませんね。最初からその記事が属するタクソノミーを表示してくれるテーマはあまりないと思います。
カスタムタクソノミーもカテゴリーのように表示させたいと思ったら、テーマを自分でカスタマイズする必要があります。
ちょっとタクソノミーを出力したいサイトがあって、Codex を見ていたら非常に簡単にタクソノミーを出力できる関数を見つけたので、出力の手順を備忘録的に残しておきたいと思います。
Table of Contents
「get_the_term_list」を使って出力
get_the_term_list という関数は、指定したカスタムタクソノミーの情報を取得します。get_the_term_list で取得したデータを出力することで、その記事が属するタクソノミーをリンク付きで表示することができます。
使い方は簡単で、テーマ内の出力したい場所に以下のコードを記述します。
<?php echo get_the_term_list( $id, $taxonomy, $before, $sep, $after ); ?>各パラメータは、以下のように指定しましょう。
$id:投稿ID。「$post->ID」にすれば開いているページのIDを取得します。
$taxonomy:カスタム分類名。出力したいタクソノミーの名前を入力します。
$before:カスタムタクソノミーの前に表示する文字(HTMLタグも可)
$sep:複数出力される場合の区切り文字(HTMLタグも可)
$after:カスタムタクソノミーの後ろに表示する文字(HTMLタグも可)
例えば、custom というカスタムタクソノミーを出力したい場合は、以下のように記述します。
<?php echo get_the_term_list($post->ID, custom, 'カスタム:', ' | '); ?>タクソノミーの前には「カスタム:」、区切りには「 | 」が出力されます。使わないパラメータは省略して OK です。
「get_the_terms」を使って出力
get_the_terms も get_the_term_list と同じように、指定したタクソノミーの情報を取得することができます。get_the_term_list に比べて、出力するのが少し面倒ではありますが、該当記事が属するタームを表示させることができるので便利です。
まずは以下のコードでタームの情報を取得します。
<?php $terms = get_the_terms( $id, $taxonomy ); ?> $id:投稿ID
$taxonomy:カスタム分類名
例えば、custom というカスタム分類名の場合、以下のように記述します。
<?php $terms = get_the_terms( $post->ID, 'custom' ); ?>これだけでは、$terms に指定したタクソノミーの配列が返されるだけなので、以下のコードを追加してタームの情報を引き出して出力します。
<?php
foreach ($terms as $term) {
$term_name = $term->name;
echo '<p>'.esc_html($term_name).'</p>';
}
?>まとめると、以下のようなコードになります。
<?php
$terms = get_the_terms($post->ID, 'custom');
foreach ($terms as $term) {
$term_name = $term->name;
echo '<p>'.esc_html($term_name).'</p>';
}
?>これでその記事が属するタクソノミーの情報を出力することができます。
上記の場合、「$term->name」でターム名を取得しているだけですが、他にも「$term->term_id」でタームIDを取得したり、「$term->slug」でスラッグを取得できたりもします。
あとがき
カスタムタクソノミーを作成していたら、せっかくなので記事ページでも表示させたいですよね。
get_the_term_listの方が楽ですが、get_the_termsの方が汎用性がありますね。

コメントを残す