[WordPress] 条件分岐をマスターしよう!

WordPressでサイトを構築していると、「カテゴリー別に記事の一覧を表示」「トップページにのみ特定のコンテンツを表示」「記事の一覧の3番目と4番目の間に広告を自動表示」のようなことをどうしてもやりたくなってしまいますね。

他のサイトを見てみると、自分のサイトにも導入したい機能だらけです。WordPressはプラグインが豊富なので、プラグインだけでも何とかなりますが、自分の思うようなサイトを構築するのであれば、自分でカスタマイズしていったほうが良いです。

カスタマイズする際に重要となるのが「条件分岐」で、これはプログラムでは主役を担う部分になります。

PHPの条件分岐

WordPressはウェブではよく使われる言語であるPHPで作られていますので、まずはPHPの条件式から学んでみましょう。WordPressの関数(条件式)の表記はPHPとは少し異なる独自のものを採用していますが、PHPの関数(条件式)を理解していれば、書き方が変わっているだけということが良くわかります。

条件分岐の代表とも言えるif文は、指定した条件を満たす場合に処理を実行します。
まず、書式を確認してみましょう。

PHPのif文(条件がひとつの場合)

if文は以下のような構文になっています。

書式
if(条件){該当した場合の処理}else{該当しない場合の処理};

さて、実際にプログラムを書いてみましょう。

$a という変数に1を設定します。

$a が1であれば「aの値は1です」、1でなければ「aの値は1ではありません」と表示させるプログラムを作ります。

↓プログラム実行結果

aの値は1です

$a=2; と変数 $a の値を変更してプログラムを実行すると「aの値は1ではありません」と表示されるようになります。

PHPのif文(条件が複数の場合)

複数条件のプログラムを作成してみます。
変数が1であれば「bは1です」
変数が2であれば「bは2です」
変数が3であれば「bは3です」
変数が1〜3以外であれば「bは1,2,3以外です」
と表示させます。

↓プログラム実行結果

bは2です

WordPressの条件分岐

さて、PHPのif文のプログラムは理解できたでしょうか?
今度は、WordPressのif文の書式を学んでみましょう。

条件がひとつの場合

WordPressではHTMLのタグとプログラムが混在する場合が多いので、テンプレート内にHTMLは直接記載、PHP部分は<?php ?> で記載するようになっています。

注意すべき点は「if(条件1 ):」「else:」の最後が「:」(コロン)で終わっているという点です。
このプログラムを実行するのは最後の部分の「;」(セミコロン)になっていますので、それまでの間はプログラムが続いているという意味になります。PHPでは{}で表記していましたが、WordPressではコロン表記になっています。

条件が複数の場合

実際の利用シーンを考えてみます。
例えば、カテゴリーページでカテゴリー別に表示内容を変更したりする場合にこの分岐が使えます。カテゴリー別にタイトルを画像で作成しておき、カテゴリー毎に別々のタイトル画像を出すなんて感じで使えますね。

プログラムが使えないとカテゴリー別にページを作成することになり、カテゴリー数が多いと酷いことになってしまいますが、プログラムが使えれば1ページで済んでしまいます。

論理演算子

実際にWordPressで条件式を使うときの条件は、上記のような$a=1;などという簡単なものばかりではありません。
「カテゴリー1」と「カテゴリー2」を表示させたいとか、「カテゴリー3」だけは表示させたくないとか、複雑な条件設定がたくさん考えられます。
そこで登場するのが「論理演算子」というものです。

AかつB

A && B

AまたはB

A || B

A以外

!A

WordPress

WordPressで用意されている条件分岐タグの一覧です。
テンプレートをカスタマイズする場合、これらの条件分岐タグを多用します。

条件分岐タグ説明
is_home()トップページかどうかを判定。
is_single()記事ページかどうかを判定。
is_page()固定ページかどうかを判定。
is_category()カテゴリーページかどうかを判定。
is_tag()タグページかどうかを判定。
is_archive()アーカイブページかどうかを判定。
is_paged()2ページ目以降かどうかを判定。
is_front_page()フロントページかどうか
is_date()日付のアーカイブページかどうか
is_singular()固定ページ・個別投稿ページ・添付ファイルページのどれか
is_post_type_archive()カスタム投稿タイプのアーカイブページかどうか
is_admin()ダッシュボードまたは管理画面かどうか

条件分岐タグ説明
is_search()検索結果ページが表示されている場合。
is_404()エラーページが表示されている場合。
is_tax()タクソノミーのアーカイブページが表示されている場合
is_post_type_archive()カスタム投稿のアーカイブページが表示されている場合。
is_page_template() 特定のページテンプレートが表示されている場合。
is_date() 日付別のアーカイブページのいずれかが表示されている場合。
is_month()月別のアーカイブページが表示されている場合。
in_the_loop() ループ内かどうかをチェック


Author: webmaster