条件分岐の if

Pocket
LINEで送る


スポンサードリンク



さあ、今度は条件分岐というのをやるぞ。

条件分岐というのは、たとえば、「投稿ページを出力する場合はAの処理をする。固定ページを出力する場合はBの処理をする。」という風に、指定した条件によって実行する処理を変えたいときにつかう。

大まかに言えば、WordPressのデザインでよく使われると考えてもらっていい。

これで今までよりも1段上のプログラムが書けるぞ。

条件分岐には if という制御構文を使ってプログラムを書いてやればいい。こんな感じだ。
PHPプログラムのifを使った条件分岐

例によって、PHPエディタで打ち込んでみてほしい。

・・・打ち込んだかな?

じゃ、ifを使った条件分岐の書き方についてみてみよう。次のようなパターンで書くのがルールだ。

if (条件) {

条件を満たすときの処理

} else {

条件を満たさないときの処理

}

この赤い字の部分を頭にインプットしてから、冒頭のWordPressプラグインのスクリプトをもう一度見直して欲しい。どこが条件で、どこが処理か、なんとなく分かるはずだ。

一つずつ見ていこう。

まず最初に if と書く。その次に()でくくられているのが条件だ。この場合、is_front_page()というのが条件になっている。

is_front_page()と言われても、何のことだか分からないだろう。これは、WoedPressでは「サイトのトップページを表示している場合」という意味なんだ。正確にはフロントページというんだけど、まぁ、詳しくはすぐ後で説明するから、とりあえず先に進もう。

で、その後に { と }でくくられている部分があるね。これが、条件を満たすときの処理だ。この場合、is_front_page()という条件を満たすとき、すなわち、サイトのトップページが表示されているとき、

echo “ここはトップページです”

という処理が行われることになる。つまり、「ここはトップページです」と表示されるわけだな。

その次に else と書く。elseっていうのは英語で「その他」っていう意味だよね。だからその次に、条件が満たされないときの処理を { と } でくくって書いてあげる。この場合、

echo “ここはトップページではありません”

がそれだ。サイトのトップページが表示されていないときは、「ここはトップページではありません」と表示されるわけだ。

じゃあ、例によってプラグインを設定して、実際にサイトを表示させて、ちゃんと条件分岐ができているか確認してみよう。

・・・と言いたいところだけど、今回はもうちょっとやるべきことがある。

気づいているかな?

計算するプログラムを作ってみようまではプラグインのスクリプトに

add_filter(‘the_content’, ‘phpstudy’ );

というのがあったけど、今回はなくなっていることに。

これは、投稿した記事の中でプラグインの処理を実行させる命令だったんだけど、今回はちょっと違う場所に表示してみよう。

表示のさせ方なんだけど、WordPressでは、トップページとか、その他のページとか、ページによって制御しているプログラムが異なるんだ。それぞれが.phpファイルになってる。

だから、処理を実行したい.phpファイルに書き込む必要があるんだな。こういっても分かりにくいだろうからとにかく実践してみよう。以下のようにやってみてくれ。

プログラミング練習3つの準備で用意した「XAMPP」フォルダから「htdocs」→
「wordpress」→「wp-content」→「themes」→「twentyeleven」(ここはWordPressのバージョンなどによって違う場合があるから、適宜読み替えてくれ)とフォルダをもぐっていくと「index.php」というファイルがあるからこれをPHPエディタで開こう。

index.phpはトップページに何を表示させるかを制御しているファイルだ(場合によっては違うこともあるんだけど、今回はこれで大丈夫)。

開いたら、19行目に、下記の赤枠のように記述する。(記述する前のindex.phpはコピーして原本として保存しておこう。そうすれば、失敗したときでも原本からやり直すことができるからね)
twentyelevenのフロントページを制御するindex.php

この phpstudy() は今回のプラグインで定義した関数だ。分かるね?

これでトップページに今回作成したプラグインの処理が実行されるようになるはずだ。

今回は19行目に記述したけど、極端な話、これは別にどこでもいい。自分の表示させたい場所で構わないんだ。きっとキミは、今はまだ、どこにどう記述したら、サイトのどこに表示されるのかが分からない状態だと思う。これについては別の項で説明するね。

で、だ。今回のプラグインは「トップページとそれ以外」という条件分岐を設定したよね。だから、トップページ以外にも同じことを記述しなきゃいけない。そうして両方のページを表示させて比較しないと、条件分岐がうまくいっているかどうか確認できないからね。

ということで、「twentyeleven」フォルダの中にある、「page.php」を開こう。これは固定ページに何を表示するか制御するファイルだ(WordPressでは、主に日記とか最新情報とかタイムリーな情報を書く「投稿ページ」と、普遍的な情報を書く「固定ページ」っていう区別がある。今回はトップページ以外だったら何でもよかったので、なんとなくpage.phpにしてみた)

開いたら、19行目に  と記述する。(記述する前のpage.phpはコピーして原本として保存しておこう。さっきも言ったけど、いつでも元に戻せる状態にしておくことはとても大事なことだ)
ページの表示を制御するpage.php

これで準備は整った。

プラグイン化して、ローカル環境で動作確認だ。「XAMPP」フォルダ以下をもぐっていって「plugins」の中に置いて、WordPressの管理画面でプラグインを有効化しよう。やり方を忘れてしまったら、プログラミング練習3つの準備WordPressプラグインの作り方を復習しよう。

トップページ、つまり http://localhost/wordpress/ にアクセスすると、こんな感じで表示されるはずだ。
WordPressで条件分岐

今度はトップページ以外の表示確認をしよう。固定ページに設定したから、試しにサイトメニューの「サンプルページ」というところをクリックしてみよう。
固定ページで条件分岐

ちゃんと設定した通りに表示されたら成功だ。おめでとう!

もしうまくいかなかったら、ここから条件分岐ifのプラグインをダウンロードできるようになっているから、自分の書いたものと比べて確認してね。

条件分岐ifは、トップページだけに新着情報を掲載したいとか、固定ページにだけ広告を表
示させたいとか、そんな風に使うことが多いよ。あとは、サイト訪問者にフォームに数字を入力してもらって、それによって処理を変えるとか、いろいろある。実戦的な使い方はまたおいおいやっていくね。

さて、この項の締めくくりに、条件として指定した is_front_page() について説明しよう。

WordPressには条件分岐タグと呼ばれるものがある。 条件分岐タグにはさまざまな種類があるんだけど、is_front_page() はそのひとつなんだ。

条件分岐タグは、その名の通り、ifに続く()の中に、条件として記述して使う。

is_front_page() はさっきも言ったとおり、「トップページが表示されている場合」という条件を表しているよ。_(アンダーバー)とか()(カッコ)とかがついて何やら意味不明だけど、条件分岐タグはWordPressで指定されているものだから一字一句そのまま書けばいい。(WordPressの条件分岐タグはWordPressでしか使えないから注意してね。)

ほかにどんな条件分岐タグがあるかはWordPress Codex日本語版にたくさん書いてあるんだけど、よく使うものがあるから、それはこのサイトの中で紹介していくね。

スポンサードリンク