WordPressの投稿機能で記事を分類する時にカテゴリーを選択するように、カスタム投稿の記事を分類する時にはタームを選択しますよね。
その際に特定のタームの時に表示方法を変えたい…なんてことがあった場合にはタームによって条件分岐させる方法があります。
そこで今回は例としてカスタム投稿bookを元に、bookのカスタムタクソノミー“本の種類(カスタムタクソノミー名・book_cate)”を設定していたと仮定した上で説明したいと思います!
index.phpにてタームで条件分岐させるには
では初めにindex.phpにてタームで条件分岐させる方法についてお話したいと思います!
今回bookのカスタムタクソノミー名は上で書いたようにbook_cateとしており、タームとして
- 新刊(ターム名・new)
- 中古(ターム名・old)
を用意しました。
そのうえで、index.phpにてタームで条件分岐させるには
<?php if(is_object_in_term($post->ID,'カスタムタクソノミー名','ターム名')): ?> 条件分岐の内容 <?php endif; ?>
と書きます。
なので、新刊のタームを選択した時の条件分岐を設定するとしたら
<?php if(is_object_in_term($post->ID,'book_cate','new')): ?> 新刊のタームを選択した時の表示内容 <?php endif; ?>
と記述すればOKとなります!
なので新刊のタームを選択した時、中古のタームを選択した時で条件分岐させたい場合は
<?php if(is_object_in_term($post->ID,'book_cate','new')): ?> 新刊のタームを選択した時の表示内容 <?php elseif(is_object_in_term($post->ID,'book_cate','old')): ?> 中古のタームを選択した時の表示内容 <?php endif; ?>
と記述することでindex.phpにてタームで条件分岐させることができます!
アーカイブページおよび一覧ページにてタームで条件分岐させるには
続いてアーカイブページおよび一覧ページにてタームで条件分岐させる方法についてお話したいと思います!
まずカスタム投稿のアーカイブphpファイルはarchive-カスタム投稿名.phpとなるので、カスタム投稿bookののアーカイブphpファイルはarchive-book.phpになります。
カスタム投稿のアーカイブページもしくは一覧ページにてタームで条件分岐させるには
<?php if(is_tax('カスタムタクソノミー名','ターム名')): ?> 条件分岐の内容 <?php endif; ?>
このように記述することで実装可能になるので、今回の例でいうと
<?php if(is_tax('book_cate','new')): ?> 新刊のタームを選択した時の表示内容 <?php endif; ?>
と記述することでnewを選択した時の条件分岐を設定することができます!
そして他のタームの時の条件分岐も一緒に設定するとしたら
<?php if(is_tax('book_cate','new')): ?> 新刊のタームを選択した時の表示内容 <?php elseif(is_tax('book_cate','old')): ?> 中古のタームを選択した時の表示内容 <?php endif; ?>
と記述することでアーカイブページにて新刊の時と中古の時とで条件分岐をさせることが可能になります!
記事ページにてタームで条件分岐させるには
続いて記事ページにてタームで条件分岐させる方法です。
カスタム投稿の記事ページのphpファイルはsingle-カスタム投稿名.phpになりますので、今回でいうとsingle-book.phpが記事ページのphpファイルになります。
そして記事ページでタームで条件分岐させるには以下のように記述します。
<?php if(is_object_in_term($post->ID,'カスタムタクソノミー名','ターム名')): ?> 条件分岐の内容 <?php endif; ?>
なので、今回でいうと
<?php if(is_object_in_term($post->ID,'book_cate','new')): ?> 新刊のタームを選択した時の表示内容 <?php endif; ?>
と記述することで記事ページにおいて“新刊”のカテゴリーを選択した時の内容を表示させることができます!
また、新刊のタームと中古のターム、それぞれを選択した際の条件分岐としては
<?php if(is_object_in_term($post->ID,'book_cate','new')): ?> 新刊のタームを選択した時の表示内容 <?php elseif(is_object_in_term($post->ID,'book_cate','oldold')): ?> 中古のタームを選択した時の表示内容 <?php endif; ?>
と記述することで記事ページの表示を選択したタームによって条件分岐させることができるようになります(^^)
まとめ
急ぎ足でしたが、以上がカスタム投稿で選択したタームによって条件分岐させる方法でした!
選択したタームにより表示を自動で条件分岐させることができるようになれれば、いろいろと応用ができるので、是非とも覚えておきましょう!