条件分岐タグを使う


表示しているページによって内容を変化させるために専用のテンプレートを用意するという方法を前々回に使いましたが、同様のことを「条件分岐タグ」というものを使っても実現できます。

例えばヘッダー内のブログ名に対してトップページではリンクを張らないようにするには 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() 」以外にもたくさんあります。

条件分岐タグ – WordPress Codex 日本語版

必要なものがあれば探してみてください。

php の if 文については

PHP: if – Manual
PHP: 制御構造に関する別の構文 – Manual

で書き方が説明されていますが、解説サイトなどを巡ってみるほうがわかりやすいかもしれません。

ページごとに表示内容を変える手段としてテンプレート階層と今回の条件分岐タグがありますが、使い分けについて特に決まりなどはありませんので、その時々で最適だと思うものを使ってください。

個人的にはメンテナンス性を重視するのがいいと思います。あっちこっち変更したりするのは大変だしミスも起きやすいし、なによりめんどくさいです。

次はナビゲーションメニューを作ります。
…でも、このサイトじゃ使うとこが思いつかないんだよなぁ。(^_^;

今回使ったファイル:09conditional


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です