loading
 読み込み中...
ウェブの触手-日々の生活に新たなスパイスを-
アイキャッチ画像
Home > [Wordpress] > 【WordPress】いつもこんがらがるif~else関連のPHP構文をまとめてみました
この記事は約7分で読めます。

【Wordpress】いつもこんがらがるif~else関連のPHP構文をまとめてみました

投稿日:2017.6.15

ワードプレスサイトをカスタマイズする時、
必ずといっていいほどついて回るのがPHPの処理です。

その中でも(個人的に)使用頻度が高いのがif~else文。

Excelなんかでもおなじみの「もし◯◯ならば××せよ。さもなければ△△」っていうヤツです。

これなんですが、書き方がいろいろあっていつも悩んでたんですね。

でもようやくその区別がついてきたので備忘録代わりにここで紹介してみようかと。

↓↓↓簡単にサイトが作れる次世代ツール↓↓↓

SIRIUSレビューイメージ画像

PHPを覚えるとかなりラク

何度も言ってますが私はPHPに関しては全くの素人です。

でもそこはこれまでいろいろトライしてきた結果、既存のプログラムを
ある程度は自分好みになんとかカスタマイズすることができるようにはなってきました。

その中でもよく使うPHP構文が「if~else」です。

これを覚えておくとカスタマイズにかなり役立ちますよ。

例えばPC表示にはPC用の広告スクリプトを、
スマホ表示時にはスマホ用にレイアウトされた広告スクリプトを表示させたいなんていうのも
簡単にできちゃいます。

あるいは”○○というカテゴリーの記事のみ××を表示させたい”とか、
”トップページのみに△△というスクリプトを実行させたい”なんていうのもできちゃいます。

以下、私がこれまで独自に収集してきたif~else絡みのものをさらしてみます。

スポンサーリンク

if~elseの基本文型

もし○○という条件に合致していれば〇〇を実行し、
合致してなかった場合は別の〇〇を実行する
というif~else条件分岐。

私が知ってる書き方の基本は以下の4つです。

(書き方は微妙に異なりますが挙動は全部同じです)

※「:」(コロン)や「;」(セミコロン)が混在してるので注意。

※こちらも「:」(コロン)や「;」(セミコロン)が混在してるので注意。

私個人としては最後の④が一番しっくりきます。

 

使い分けの基準は、、、正直わかりません。(^^;

もしかしたら中に書くPHPのコード次第なのかもしれませんが、
その辺のところは既存のコードの書き方をそのまま利用する形ですね。

あとコードは基本的に(スペースも含めて)すべて半角英字で、
全角を使うとエラーになってサイトがきちんと表示されなくなります。

(半角)スペースに関してはあってもなくてもいいみたいです。

要は見た目の問題(見やすさ優先でスペースを入れるなど)みたいです。

スペースではなく改行で処理しても問題ないです。

ただし”<?phpの後ろは必ず半角スペース”といったように
必ずスペースを入れなきゃならないところもあったりします。

つまり<?php else : ?>を例に挙げると、

<?phpelse : ?>はダメだけど、

<?php else:?>はOK。

<?php

else :

?>

これもOKです。(確かこれで間違ってなかったと思うのだが)

 

if~else→if~elseifへの派生文型

上記は二者択一でしたが、三者択一とか四者択一なんてときもあります。

そんな時はelseブロックの前にelseifブロックを足してやります。

例えば①の書き方に条件式がさらに一つ加わった場合は
次のようになります。

条件式がさらに増えるようなら
その分だけelseifブロックを足してやればいいだけです。

②③④に関しても、
同じようにelseif文を必要な分だけ足してあげればOK。

 

PCとスマホで条件分岐

たとえばアドセンス広告をPCとスマホで別々の固定レイアウト(ここではPCなら横幅728px&スマホなら横幅300px)で表示させたい時は、こんな↓感じで書いてあげます。

(広告コードはもちろんコピーしたものです。一部伏字にしてあります)

1行目の最初の条件式は「!is_mobile()」です。

といっても実はこれはちょっと特殊な書き方になってます。

「!is_mobile()」の”is_mobile()”の部分は「スマホの時は…」という意味なんですが、
先頭に「!」が付いて「!is_mobile()」になると
「スマホ以外の時は…」という反対の意味になります。

つまり(スマホ以外の)PC表示時(タブレット含む)には728×90pxのアドセンス広告を、
それ以外(10行目の<?php else : ?>以降)は、
つまりスマホでは300×250pxの広告を表示せよという意味です。

これは「PCの時は…」に該当する適当な条件式がないために
「!is_mobile()」という条件式を使ってます。

もちろん「is_mobile()」にして、
スマホの時は○○、それ以外は…という書き方でも問題ありません。

どちらを優先するかで書き方が異なってくるだけです。

ちょっとややこしくなりますが、「is_mobile()」という条件式はそもそもワードプレス標準の関数ではなく、テーマ自体に予め設定されてることが前提となります。

これどういうことかというと、ワードプレスには標準でwp_is_mobile()」という関数が設定されてます。

ところが「wp_is_mobile()」はスマホだけではなくタブレットも含まれます。

ですから”タブレットも含むスマホでは…”で問題なければ「wp_is_mobile()」を使います。

そうではなく、スマホ表示時(タブレットを含む)PC表示時で分けたいのであれば「is_mobile()」を使います。

ただし先ほども言ったように「is_mobile()」はワードプレス標準のものではないので、テーマ内の(通常は)functions.phpに”function is_mobile() {…”という記述がなされていることが前提になります。

上記の記述(設定)がない場合は「is_mobile()」を使っても何も起こりません。

 

様々な条件の違いで分岐

他にも様々な条件の違いによって分岐させることもできます。

全部は無理なので一部を紹介します。

特定のカテゴリーに属する記事には○○

例えば下の1番目(1行目)の条件式は「カテゴリIDが9に属する記事以外の記事には○○」

2番目(3行目以降)の条件式は「カテゴリIDが9に属する記事には○○」というものです。

2行目のコードは”グループ81に属する広告をランダム表示する”という単純に私のサイトでの設定コードの一例で、わかりやすくするため具体的に書いただけのことです。

カテゴリーIDではなくカテゴリーのスラッグそのものを記述することもできます。

たとえばカテゴリー(スラッグ)が”news”だったとしたら、

<?php if(!in_category('news')) : ?>

と書きます。

もしも複数のカテゴリーを指定したい場合は下の↓ように、配列用のarrayを使い、
直後の()の中に複数のカテゴリーIDをカンマで区切って書いていきます。

(もちろんカテゴリースラッグでもOK)

<?php if(!in_category(array(17,37))) : ?>

トップページなら○○

トップページのみの条件分岐であればコチラの↓ように書きます。

ただし上の例だと「古い記事」へのリンクをクリックして
2ページ目や3ページ目に移動したページも含まれてしまいます。

そうではなくて純粋にトップページだけに限定したいのであれば
コチラ↓のコードを使います。

”&&”の意味です。

is_paged()2ページ目以降があればという意味なので、!is_paged()であれば1ページ目のみという意味になります。

しかしながらこれがうまく作動しない場合もあります。

それがダッシュボード→設定→表示設定で、
フロントページの表示を「最新の投稿」ではなく「固定ページ」にしている場合です。

この場合はis_home()ではなく代わりにis_front_page()を使います。

両方とも使いたいなら、

”||”or の意味です。

投稿ページなら○○

投稿ページのみという条件分岐ならコチラ↓になります。

記事IDが20の記事のみ○○

特定の記事のみの条件分岐ならコチラ↓のようになります。

他にもいろいろありますが、気付いたら順次加筆していきます。

記事はお役にたてましたか?

記事にご興味をもっていただけましたら
下のソーシャルボタンで共有していただけると嬉しいです^^

 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

スポンサーリンク

おススメTCDテーマ

WordPressテーマ「VIEW (TCD032)」

コメント(0件)

コメントをどうぞ

入力いただいたメールアドレスは公開されません。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

先頭へ