22June

カスタムタクソノミー(カスタム分類)情報を表示する方法

 

ループ内でカスタムタクソノミーを表示する方法を詳しく調べたのでφ(..)メモメモ



1. テンプレートタグ the_taxonomy() を使う


日本語版Codexでは一切記載がないのですが、ひそかに the_taxonomy() というテンプレートタグが存在しているようです。

このタグはカテゴリー情報を表示する the_category() のタクソノミー版で、パラメータを何も指定しなくても利用できます。

<?php the_taxonomies(); ?>



デフォルトでは

タクソノミー名:分類名1 と 分類名2.

のように表示されます。

「と」という区切り文字には胸いっぱいの違和感を感じるので、今後の改善に期待です^^;

パラメータを指定できますが使い勝手が悪く、まだまだ the_category() ほど安易に使えるタグではありません。

参考:英語版Codex http://codex.wordpress.org/Function_Reference/the_taxonomies




2. Get the Term List関数を使う


タクソノミー情報を表示する際、より一般的に使われているのは get_the_term_list関数です。

必要な情報を簡単に”表示”できるテンプレートタグと違い、この関数は取得した情報をechoで表示する必要があり、非プログラマの僕らには恐怖感がありますよね・・・

<?php echo get_the_term_list( $post->ID, 'taxonomy-name', '分類:', ', ', '' ); ?>



ループ内で使用する時も手動で「投稿ID」を指定しなければいけません。怖い、怖い・・・
ループ内で使用する際は1つめのパラメータに「$post->ID」といれましょう。

2つめのパラメータはタクソノミー名を入力します。

3つめのパラメータは「リスト直前のテキスト」です。

4つめのパラメータは「区切り文字」です。

5つめのパラメータは「リスト直後のテキスト」です。


動作はまさに the_category() のタクソノミー版なので、このコードは覚えておきましょう。



3. Get the Terms関数を使う


先ほどの get_the_term_list() はリンク付きリストを出力する関数です。

対して get_the_terms() は、タクソノミー情報を取り出し、それを自由に出力することができます。

1
2
3
4
5
6
7
<?php 
$terms = get_the_terms($post->ID, 'taxonomy-name');
foreach ($terms as $term) : ?>
 
	<?php echo $term->name; ?>, 
 
<?php endforeach; ?>



上記コードでは、その投稿が属するタクソノミー名が全てリンク無しで表示されます。
2行目の「taxonomy-name」の箇所は、実際のタクソノミー名に変えてください。

タクソノミーはカテゴリーなどと異なる使い方をするケースが多いので、「タクソノミーアーカイブへのリンクは不要」という際にこのコードを使用しましょう。

ネットショップ経営術のRSS
このサイト全体のRSS