WordPressをカスタマイズする人は多分、トップージと記事ページや他のページは別のデザインにしたいとか、別のスクリプトを読み込ませたいとかあると思います。
しかし、header.php
を2つも3つも作るのはなんかナンセンスですよね。
管理もしにくいし・・・
そこで、WordPressは便利な関数を用意してくれています。
自分のメモも兼ねてこちらにまとめておきます。
WordPress の条件分岐タグ
WordPress は条件分岐タグ(Conditional Tag)というタグが用意されています。
ブログで使用すると言うよりは、普通のサイトを作るとにめっちゃ使うと思います。
トップージかどうか判別する。
トップページかどうかはis_home()
を使用し判別します。
<?php if(is_home()): ?>
ここのコードが表示or実行されます。
<?php endif; ?>
ただし、このis_home()
はブログでよくあるページネーションで次のページに移動してもトップページと判別してしまうため純粋にトップページだけを判別したい場合は下記のようにか書き換えます。
<?php if(is_home() && !is_paged()): ?>
トップページのみ表示されます。
<?php endif; ?>
トップページではないフロントページを判別するとき
is_home()
では判別できないトップページがあります。
それが、WordPress上で固定ページや投稿ページを
その場合はis_front_page()
を使用します。
<?php if(is_front_page()): ?>
フロントページです。
<?php endif; ?>
その他、固定ページと投稿ページの判別
投稿ページはis_single()
固定ページはis_page()
で判別します。
ちなみに、パラメータを渡せば更に細かく判別できます。
投稿ページはブログの記事ページのことです。
ダッシュボードの投稿から作成できます。
<?php if(is_single('num')) : ?>
記事のページID:"num"を表示しています。
<?php elseif(is_single(array(num1, num2, num3))) : ?>
記事のページID:"num1, num2, num3"のうちのどれかをを表示しています。
<?php endif ?>
固定ページは投稿とは異なりダッシュボード→固定ページから作成できます。
親子構造にできたり投稿ページにはない機能があります。
<?php if(is_page('num')): ?>
このページはページIDは"num"です!
<?php elseif(is_page('CONTACT')): ?>
このページのタイトルは"CONTACT"です!
<?php elseif(is_page('contact')): ?>
このページの投稿スラッグは"contact"です!
<?php endif; ?>
条件分岐でハマった単純なこと・・・
上記のタグを書くとそれに応じたtrue / false
が返ってくるのですが、それがうまくいかない場合があります。
大昔は<script>
も<head>
に記述する時代がありましたが、もはや<script>
の記述場所はレギュレーションやエンジニアの好みで変えられるものになっています。
WordPressでの判別において<head>
内で記述するには問題ありませんがコンテンツをquery_posts()
を使用し取得するとそれ以降はすべてarchiveとして認識されるためfooter.php
とかにis_home()
とか書いてもfalse
になってしまいます。
上記画像で言えばcontent以降です。
なので、この場合は不要になったquery
をキャンセルすればOKのようです!
記事取得の後に下記を記述します。
<?php wp_reset_query(); ?>
これで、無事解決しました。!
まとめ、今回紹介したタグ一覧
is_home() | トップページの判別 |
is_paged() | 分割された2ページ目以降かどうかの判別 |
is_front_page() | ダッシュボード → 設定 → 表示設定でフロントページ設定したページかどうかを判別 |
is_single() | 個別ページ(シングルページ)かどうかを判別 |
is_page() | 固定ページを判別する |
以上、ご参考にしてください。