WordPressの独自テーマの作成中に、カスタム投稿タイプのsingleページにて、
その投稿($post)が特定のカテゴリー(taxonomy)に紐付いているか。
をチェックしたかったのですが、いかんせん上手く行かなかったので書き残します。
この記事の目次
書いたコード
$is_hoge_taxonomy で条件を切れるようにしたかったので、
get_the_terms( POST_ID , TAXONOMY_NAME );
でカテゴリー(taxonomy)の一覧を取得して、その中に特定のカテゴリーが存在するかをチェックしています。
<?php the_post(); $terms = get_the_terms($post->ID,'plan_taxonomy'); $is_hoge_taxonomy = false; if($terms): foreach($terms as $term): if($term->slug == ‘hoge’){ $is_hoge_taxonomy = true; } endforeach; endif; ?>
ハマったポイント
get_the_terms( POST_ID , TAXONOMY_NAME );
のTAXONOMY_NAMEに何を入れるのかがさっぱりわからなかった。。
カスタム投稿タイプのカテゴリー管理画面のURLを見ると、
example.com/wp-admin/edit-tags.php?taxonomy=plan_taxonomy&post_type=plan
といった形になっているので、taxonomy=XXXXXの部分を参考にした。
条件の切り分け
上記のコードで$is_hoge_taxonomyで切り分けができるようになったので、
下記のようにカテゴリーへの紐付け状態によって条件の切り分けができるようになります。
<?php if ( $is_hoge_taxonomy ){ // hoge カテゴリーに紐付いている時の処理 }else{ // hoge カテゴリーに紐付いていない時の処理 } ?>