
WordPressの投稿とカスタム投稿を振り分けたい時はこれで解決。(条件分岐できない時の対処方法。)
です・ます調の文章でなくてすみません。当初は個人的なメモ書きだったためです。
Contents - 目次
投稿とカスタム投稿タイプ。
is archiveの仕様。
WordPressでテーマを作っている時、デザインを分けるためなどで、デフォルトの「投稿」と「カスタム投稿タイプ」を条件分岐したい時がある。
(例えばアーカイブページやシングルページなどのヘッダー画像や、見出し部分、文章など。)
ところが、投稿、カスカム投稿タイプに共通する「is_archive()」では、カスタム投稿タイプ用の「is_post_type_archive(‘○○○’)」やシングルページ用の「is_single(‘○○○’)」のようなパラメータの指定ができない。
(※○○○はスラッグ名など。)
参考:WordPress Codex 日本語版 関数リファレンス/is archive
テンプレート階層。
また、テンプレート階層でもarchive-○○○.phpがないとarchive.phpが適用される。なのでarchive-○○○.phpを作成しても、is_archive(‘○○○’)で指定ができないので、条件分岐が難しい。
画像出典:WordPress.org 日本語
代替案、解決策の例。
もしかしたら他の方法で振り分けることできるかもしれないが、ちょっとややこしくなりそうだ。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年以上のキャリアがありますが、一気にがぁっと書いています。(元々はメモ書きでしたので順次見直し、更新しています。) ※事実や経験、調査や検証を基にしていますが、万一なにかしら不備・不足などがありましたらすみません。お知らせいただければ訂正いたします。 ※写真は主にUnsplashやPixabayのフリー素材を利用させていただいております。その他の写真や動画もフリー素材やパブリックドメイン、購入素材、もしくは自前のものを使用しております。