WordPressの投稿とカスタム投稿を振り分けたい時はこれで解決。(条件分岐できない時の対処方法。) / いがわ

.

Memo

WordPressの投稿とカスタム投稿を条件分岐したい。

投稿とカスタム投稿タイプで条件分岐。

投稿のis_single()と、カスタム投稿タイプのis_archive()。

is_archive()ではパラメータを指定できない。

is_archive()の仕様。

WordPressでテーマを作っているとき、デザインを分けるためなどで、デフォルトの「投稿」と「カスタム投稿タイプ」を条件分岐したいときがある。

例えばアーカイブページやシングルページなどのヘッダー画像や、見出し部分、文章などを条件分岐で指定したいことはよくある。

is_archive()のカッコの中には入れられない。

ところが、投稿、カスカム投稿タイプに共通する「is_archive()」では、カスタム投稿タイプ用の「is_post_type_archive(‘○○○’)」やシングルページ用の「is_single(‘○○○’)」のようなパラメータの指定ができない。

○○○はスラッグ名など。)

テンプレート階層。

また、テンプレート階層でもarchive-○○○.phpがないとarchive.phpが適用される。なのでarchive-○○○.phpを作成しても、is_archive(‘○○○’)で指定ができないので、条件分岐が難しい。

WordPressのテンプレート階層。

画像出典:WordPress.org 日本語


is_archive()の代替案、解決策の例。

もしかしたら他の方法で振り分けることできるかもしれないが、ちょっとややこしくなりそうだ。

CSSのdisplay: none;でもやろうと思えばできるが、スマートな使い方とは言えない。

なので、手っ取り早い方法としては…

-○○○.phpで振り分ければ良い。

  • デフォルトの投稿ページは、archive.php、single.php、header.phpを使う。
  • カスタム投稿タイプページは、上記の3つのファイルを複製し、振り分けたい画像や見出し、文章などを差し替えて、archive-○○○.phpとsingle-○○○.php、header-○○○.phpを作成。
  • 作成したarchive-○○○.phpとsingle-○○○.phpへ、get_header(‘○○○’)を記述して、header-○○○.phpを指定する。

archive-○○○.phpとsingle-○○○.phpへの記述例。

<?php get_header('○○○'); ?>

<!--メインやキーとなる画像や見出し、文章などの記述。-->

○○○はスラッグ名など。)

HTMLの文法的にも問題ない。

大体これで解決する。
書き出されるHTMLの文法も問題ない。

投稿とカスタム投稿タイプで条件分岐を考えるイメージ画像。

以上、参考になれば幸いです。


Webデザインは実務数年、職業訓練校講師数年、フリーランス数年、計15年以上のキャリアがありますが、一気にがぁっと書いているので「です・ます調」ではありません。(元々はメモ書きでした。) 事実や経験、調査や検証を基にしていますが、万一なにかしら不備・不足などがありましたらすみません。お知らせいただければ訂正いたします。 写真は主にUnsplashPixabayのフリー素材を利用させていただいております。その他の写真や動画もフリー素材やパブリックドメイン、もしくは自前のものを使用しております。

井川 宜久 / Norihisa Igawa
デザイナー、ディレクター、講師、コーチ / 井川宜久

WordPress 関連メモ。


免責事項について

  • 記事ページ(Memosのページ)は当初は文字通りメモ書きでした。その後、修正や更新をしております。
  • 事実や経験、調査や検証を基にしていますが、万一なにかしら不備・不足などがありましたらすみません。お知らせいただければ早急に対応いたします。
  • 一個人のポートフォリオサイトですので、万一損害・トラブル等が発生した場合でも、一切の責任を負いかねます。