WordPressでカスタム投稿、カスタム分類(タクソノミー)を作った時のテンプレート分岐条件についてご相談頂きました。
目次
カスタム投稿 シングルページの分岐について
はじめまして。
Custom Post Type UIのプラグインをつかって、投稿タイプを作りました。
その中で、二つタクソノミーを作ったのですが、このタクソノミーのシングルページのデザインを下記のように作りました。
single-タクソノミーA.php
single-タクソノミーB.php
いざページを表示すると、どちらもsingle-タクソノミーA.phpのデータの方が表示されてしまいます。
なにか条件分岐など書かないとダメなのでしょうか?
初心者な質問ですみません。
宜しくお願いします
テンプレート階層について
>しん さま
ご相談ありがとうございます。
多くの人が悩まれる部分だと思います。(いまだにこんがらがる時も・・・)
初心者ということですが、カスタム投稿・タクソノミーに挑戦されているとはすごいですね!
さて、PHPテンプレートによる分岐方法については、全て「テンプレート階層」に書いてあります。
WordPress コーデックス テンプレート階層
個別のページをテンプレートで制御する方法は
1.single-{post_type}.php
2.page-{slug / id}.php
しか無いと思います。
そして、page-ID.phpなど、固定ページはページ毎にテンプレートを制御可能ですが、
投稿やカスタム投稿は
single.php
or
single-{post_type}.php
のように投稿タイプ毎に共通のテンプレートしか作る事ができません。
single-タクソノミー.php という考え方が成り立たないはずです。(そういうテンプレ自体が作れない)
>どちらもsingle-タクソノミーA.phpのデータの方が表示
というのはよくわかりませんが、例えばpost_typeと同じ名前のtaxonomyならそのようになるのかもしれませんね・・・
タクソノミーを制御するテンプレートは、
1.archive-{post_type}.php
2.taxonomy-{taxonomy}.php
3.taxonomy-{taxonomy}-{term}.php
などがありますが、これらはいずれも一覧ページのテンプレートです。
「タクソノミーのシングルページのデザイン」とありますが、タクソノミーABではなく投稿タイプABに分けるという方法ではダメなのでしょうか?
single-A.php(Aの投稿タイプのシングルページ共通のテンプレート)
single-B.php(Bの投稿タイプのシングルページ共通のテンプレート)
という形です。これが一番スムーズかもしれません。
他、single-{post_type}.php の中でタクソノミーによる分類を行うことは可能かと思いますが、single.phpの中でカテゴリーやタグで条件分岐するのとはまた違って難しいため、初心者向けとは言えないかもしれません・・・
(おそらく is_object_in_term を使います)
テンプレート階層と、条件分岐タグは種類もあって難しいです。
一覧ページのテンプレートで使うべき条件分岐タグ
個別ページのテンプレートで使うべき条件分岐タグ
があるためです。
前述のようにタクソノミーABではなく、投稿タイプABに分けるなども視野に入れてみて下さい。
参考にして頂ければ幸いです。