どうも。カスタムタクソノミーを設定している場合で、記事ページにて「特定のカスタムタクソノミーの場合に何かを表示させたい」というニッチな需要があったとします。
その場合、どのように条件分岐を書けばいいのかちょっとわからなくなってしまったので自分用に備忘録しました。また、同じような悩みをもつ同士の方の参考になればと思います。
is_object_in_termを使う
<?php if ( is_object_in_term($post->ID, 'カスタムタクソノミー名','スラッグ') ): ?> //指定したタームの時に表示する内容を書く! <?php else: ?> //そうじゃない場合の何かを書く?必要なければ消してね。 <?php endif; ?>
ターム名、スラッグの部分に自身が指定したいものを書きます。
例
例えばpostgroupというカスタムタクソノミーを作っており、その中に、enjoy_groupというスラッグのタームをつくっていた場合は下記のようにします。
<?php if ( is_object_in_term($post->ID, 'postgroup','enjoy_group') ): ?> //エンジョイグループ(スラッグ:enjoy_group)に属する記事の時に表示したい内容をかく <?php else: ?> //そうじゃない場合の何かを書く。必要なければ消す。 <?php endif; ?>
このようにすればenjoy_groupというタームを設定している記事にのみ表示することができます。
どのような場合に有効か
どういった場合に使うのかという点ですが、例えばイベント情報などを配信している場合、イベント情報を書いているグループの記事ページにだけ、申込みフォームへのリンクボタンを設置したい!という場合や、カスタムフィールドなどを使っていて、それを特定タームの記事ページにだけ表示したい場合などに有効です。
イベントページに申込みボタン | イベント情報と言った感じのカテゴリを持っている場合などに、イベント情報の下とかに、申込みボタンを設置したい!といった場合に使える |
---|---|
特定のタームの場合にカスタムフィールドを表示させる | 特定のターム(カテゴリーとか)でカスタムフィールドで付加情報がある場合に(例えばイベントの開催日とか)タイトルの下にイベント開催日や集合場所などをカスタムフィールドに登録しておき、それを記事テンプレート内で表示させることができる。 |
この他にもいろいろあるとは思いますが、ぱっと思いつかなかったので2つだけ…
もちろんこれらの方法は、single.phpを別に作ってそちらに記述してもいいとは思いますが、ちょっと記事本文の上下に表示させたいというくらいであれば、メンテナンスのことを考えると条件分岐で書いてあげたほうがいいかと思います。
ついでに!
「特定のカテゴリーの場合」の条件分岐の書き方
普通のカテゴリーの場合のsingleページでの条件分岐の書き方もおさらいしておきたいと思います。
といっても簡単で、例えば「ワードプレス(スラッグ:wordpress)」というカテゴリーを指定した記事の場合という風に書くには…
<?php if ( in_category( 'wordpress' ) ): ?> //'ワードプレス'カテゴリーの場合の処理 この記事はワードプレスのことについて書いた記事です。 <?php else: ?> //そうじゃない場合 この記事はワードプレスのことについて書いた記事ではありません。 <?php endif; ?>
カスタムタクソノミーではなくデフォルトのカテゴリーで条件分岐を各場合はこのように書きます。
これを知っているのと知らないのとでは、記事ページのカスタマイズの可能性がかなり変わってきますので覚えておくと便利ですよ!
あとがき
さて。簡単ではありますがこの条件分岐検索しても意外と情報が少なかった(あったとしてもわかりにくかった)ので次回同じことで困ったときにすぐに見返すことができるように記事にさせて頂きました。
WordPressカスタマイズの参考になれば幸い。
[…] 参考にさせて頂いたサイトはこちらです。 […]