WordPressのカスタム投稿で、シングルページのタームの分岐でかなり悩んだ件

WordPress構築の案件でかなり手こずったので
備忘録としてのこしておきます。

WordPressのカスタム投稿のシングルページで
ターム(分類)の条件分岐ができなくて
時間がかかってしまいました。

通常の「投稿(post)」では「in_category」があるのですが、
カスタム投稿ではこの「in_category」はちゃんと動かないのです。

で、調べてみたらわかりました。
is_object_in_term」を使えばいいのです。
でも、この「is_object_in_term」という関数
あまり詳しく書かれていないのですよね。
ということで、ここに書くことにしました。

カスタム分類の判別関数「is_object_in_term」

is_object_in_term」は
「in_category」とほぼ同じ動作をします。

is_object_in_term( $post_id, $taxonomy, $terms )
引数1.$post_id:投稿ID
引数2.$taxonomy:タクソノミー名
引数3.$term:タームID、ターム名、スラッグもしくはArray(配列)
戻り値.記事がタクソノミーに属していたら true 、属していなかったら false を返す。

記入例はこんな感じです。

タームが1つの時

1
2
3
<?php if (is_object_in_term($post->ID, 'taxonomy','term')): ?>
//ここに結果を入れる 
<?php endif; ?>

タームが複数あるとき

1
2
3
<?php if (is_object_in_term($post->ID, 'taxonomy',array('term_a','term_b'))): ?>
//ここに結果を入れる 
<?php endif; ?>

実はカスタム投稿記事の親タームを判別したくていろいろ試したのですが
全然うまくいかなくて、最終的にたどりついたのが「is_object_in_term」。

カスタム投稿はけっこうつかうので重宝しそうです。

WordPress Perfect GuideBook 3.x対応版

新品価格
¥1,706から
(2014/5/24 23:01時点)

WordPressの虎の巻。
これもよさげです。