表示しているページによって内容を変化させるために専用のテンプレートを用意するという方法を前々回に使いましたが、同様のことを「条件分岐タグ」というものを使っても実現できます。
例えばヘッダー内のブログ名に対してトップページではリンクを張らないようにするには header.php で
[php]< ?php if ( is_front_page() ): ?>
<h1>< ?php bloginfo(‘name’); ?></h1>
< ?php else: ?>
<h1><a href="<?php bloginfo(‘url’); ?>">< ?php bloginfo(‘name’); ?></a></h1>
< ?php endif; ?>[/php]
とします。
これは php が持っている if 文の機能と WordPress の条件分岐タグを組み合わせたものです。基本の形は
[php]< ?php if ( 条件分岐タグ ): ?>
条件が合ったときの表示内容
< ?php elseif ( 条件分岐タグ2 ) : ?>
条件2が合ったときの表示内容
< ?php else: ?>
条件が合わなかったときの表示内容
< ?php endif; ?>[/php]
となります。3-4行目と5-6行目は必要なければ省略可能です。ですので最初の例は「 is_front_page() 」の条件に合っていれば h1 タグだけに囲まれたブログ名を表示して、それ以外の場合は h1 タグと a タグに囲まれたブログ名を表示する、ということになります。
そして「 is_front_page() 」の条件とは「サイトのフロントページ(設定>表示設定 でフロントページに設定されているもの)が表示されていること」なのでブログのトップページではブログ名にリンクがなく、それ以外のページではブログ名にリンクが張られることになります。
もちろん条件分岐タグは「 is_front_page() 」以外にもたくさんあります。
必要なものがあれば探してみてください。
php の if 文については
PHP: if – Manual
PHP: 制御構造に関する別の構文 – Manual
で書き方が説明されていますが、解説サイトなどを巡ってみるほうがわかりやすいかもしれません。
ページごとに表示内容を変える手段としてテンプレート階層と今回の条件分岐タグがありますが、使い分けについて特に決まりなどはありませんので、その時々で最適だと思うものを使ってください。
個人的にはメンテナンス性を重視するのがいいと思います。あっちこっち変更したりするのは大変だしミスも起きやすいし、なによりめんどくさいです。
次はナビゲーションメニューを作ります。
…でも、このサイトじゃ使うとこが思いつかないんだよなぁ。(^_^;
今回使ったファイル:09conditional