条件分岐が使えるようになると、WordPressでできることが格段に広がります。ということで、実際のコードの書き方をテーマごとに解説していけたらと思います。
まずは固定ページから。
固定ページの条件分岐には「is_page()」を使います。
Codexに書いてある解説を引用すると、
この条件分岐タグは、個別の固定ページを表示しているかどうかをチェックします。これは真偽値を返す関数であり、TRUE または FALSE を返します。このタグはループの前に使われる必要があり、ループ内では機能しません(以下の注釈を参照してください)。
こんな感じ。とにかく、どう書くのかというと・・・
<?php if(is_page(511)):?> <p>固定ページID511だけで表示される処理1</p> <?php endif;?>
こんな風です。
is_page() のかっこの中に書いているのは、この場合固定ページのIDですが、Codexによれば「スラッグ名」「ページのタイトル」でも良いようです。
私は、なんとなく、IDを多用してしまう傾向がありますが、場合によってはスラッグ名が便利な時もありますので、そちらも一応紹介を。
<?php if(is_page('test01')):?> <p>固定ページのスラッグが'test01'の時表示される処理1</p> <?php endif;?>
スラッグで指定する場合はシングルクオテーションで囲むことをお忘れなく!
Codexを引用した文章の最後に重要なことが書いてあるのですが、is_page()は「ループ外」でしか使えません。
ですので、ループ内で条件分岐したい場合は、下記のような書き方があります。
<?php if($post->ID == 511):?> <p>固定ページID511である時表示される処理2。ループ内の場合</p> <?php endif;?> <?php if($post->post_name == 'test01'):?> <p>固定ページのスラッグが'test01'の時表示される処理2。ループ内の場合</p> <?php endif;?>
511の部分を別のIDにしたり、’test01’の部分を別のスラッグにしてご利用ください。
さらに、さらに、固定ページで親子関係を利用している場合、「特定の親ページに属する子ページ」を選んで何か処理をしたい、ということもあると思います。その場合は、下記のような書き方ができます。ただし、ループ内でのみ使用可能です。
<?php if($post->post_parent == 511):?> <p>固定ページの親ページのIDが511の時表示される処理2。ループ内の場合</p> <?php endif;?>
ループ内限定です。
というのを実際に表示してみた固定ページが下記の通り。
http://learning.ccc-labo.net/test01/
http://learning.ccc-labo.net/test2/
http://learning.ccc-labo.net/test01/test03/
固定ページの IDの確認方法ですが、私はプラグインを入れているので、上記の通り、一覧の隅っこに表示されるようになっています。「WP Show IDs」というプラグインです。ですが、これは長らく更新されてないようなので、別のがいいかもしれません。「ShowID for Post/Page/Category/Tag/Comment」とか、他にも探すとあると思います。
プラグインを利用しない場合ですが、固定ページの管理画面から確認できます。
調べたい固定ページを開いてアドレスバーを確認します。
これでも事足りますが、一覧できる方が便利なので、プラグインに頼ることが多いです。
いかがでしょうか?これなら使えるかも!?と思っていただければ幸い。質問や「この書き方おかしい」っていうツッコミはコメントからお願いいたします。
私は、イマイチ、is_page()が「ループ内では使えない」ということに納得いかないのですが、理由を解説いただける方がいらっしゃったら是非お教えいただきたいですー。