【Wordpress】if文の覚え方（イメージの仕方）

# はじめに
Wordpress（以下、WP）でのWEBサイト構築では基本的な処理を使うことがほとんどですが、頻繁に使うことがないと「あれ？」っとなってしまう【条件分岐】。
プログラミングをやったことがない方だと何となく敷居が高く感じる。
でも何とか覚えたい！と言う人向けに、条件分岐で使うif文を書く際ののイメージの仕方を記事にしました。

:::note info
WPのテーマを自作しようと考えている方は、こちらでテンプレートの作り方を解説しています。コードもあります。
+ [【初心者向け】Wordpressテーマを自作する際に分かってると良いかもしれない事](
https://qiita.com/makkie/items/dc764c2845492079c0af)
+ `index.php`のコードを知りたいよって方はこちら
[【初心者向け】Wordpressテーマを自作する[index.php]](https://qiita.com/makkie/items/b5231a9f63b076c70af8)
+ `header.php`のコードを知りたいよって方はこちら
[【初心者向け】Wordpressテーマを自作する[header.php]](https://qiita.com/makkie/items/6d19ec0da990486ec6ab)
+ `footer.php`のコードを知りたいよって方はこちら
[【初心者向け】Wordpressテーマを自作する[footer.php]](https://qiita.com/makkie/items/65cd4be0e9c4ccbf7776)
+ `singular.php` `single.php` `page.php`のコードを知りたいよって方はこちら
[【初心者向け】Wordpressテーマを自作する［singular.php］［single.php］［page.php］](https://qiita.com/makkie/items/1b7f1961f5970b4f6f21)
:::

# 条件分岐とは
WPは情報を登録（入力）する機能が基本的に「投稿」か「固定ページ」しかありません。
（カスタム投稿もありますが、これも投稿や固定ページと大筋同じかなと）
登録する場所が2か所しかないけど、頻繁に更新するのは基本的に「投稿」だけです。
（固定ページは独立したページで、グルーピングできない）
たくさんの投稿を整理して見やすくするためには、「カテゴリ」や「タグ」といった機能を利用しますが、WPのテーマをカスタマイズや自作する場合、「特定の条件の情報だけを表示したい」時が頻繁にあります。
そういう場合に使用するのが「条件分岐」です。
基本的なページごとの条件分岐はCodex見ればほぼ分かるので割愛します。

https://wpdocs.osdn.jp/%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90%E3%82%BF%E3%82%B0

:::note warn
条件分岐をする際にも、ルールを決めるようにしてください。
ルール化されていないと、やりたいことは同じなのに、違う書き方をして、メンテナンス性が落ちたりします。
複数人で作業する場合は当然ですが、一人でやる場合でも、後々のことを考えて、ルール化してください。

特に理解が浅い処理などは、検索で表示されたコードをそのままコピペしてしまう傾向があり、エラーが出た時の対処にも困る場合があります。
どうしても外れる書き方をしなければならない場合は、コードの近くにコメントを入れる等、未来の自分にも他人にも配慮しましょう。
:::


## 解説
条件を判定する時に使うのが`if`と`else` `elseif`です。
検索する時などは`if文`と検索すると色々出てきます。
`if文`はWP（PHP）ではなく、色々なプログラミング言語で使われるので、プログラミングを学ぶとっかかりとしても使えると良いのではと思います。

### if文のイメージのしかた
`if`は簡単に訳すと`もしも`ですよね。
`if`を使うときは`もしも` `●●だったら` `■ ■と処理する`

`else`は`if`と一緒に使います。
`if`は`もしも` `●●だったら` `■ ■と処理する`
`else`は`●●じゃなかったら` `△△と処理する`

`elseif`は`if`と`else`の機能をあわせ持っていて、`if`の他に指定する条件がある場合に使います。
`if`は`もしも` `●●だったら` `■ ■と処理する`
`elseif`は `●●じゃない`けど`XXだったら` `***と処理する`

頭の中でイメージしても良いし、実際に日本語で文章を書いてからコード化するのはおススメです。
私も覚えたての時は、日本後で文章にしてからコード書いてました。

```diff_php
//もしも●●だったら■ ■と処理する
if(`●●`) {
    echo `■ ■`;
}

//もしも●●だったら■ ■と処理する
//●●じゃなかったら△△と処理する
if(`●●`) {
    echo `■ ■`;
} else {
    echo '△△';
}

//もしも●●だったら■ ■と処理する
//●●じゃないけどXXだったら***と処理する
if(`●●`) {
    echo `■ ■`;
} elseif('XX') {
    echo '***';
}
```
### 条件分岐を使うなら倫理演算子も
せっかくの条件分岐、１つの条件ではなく「複数の条件で分岐出来たら」と思いますよね。
そこで`倫理演算子`です。
簡単な条件分岐であれば、この倫理演算子を使えば簡単に実装できます。

<table>
<tr>
<th>演算子</th><th>記述例</th><th>意味</th>
</tr>
<tr>
<td>&& 又は and</td><td>a && b</td><td>aとbが共に真の場合に真</td>
</tr>
<tr>
<td>|| 又は or</td><td>a || b</td><td>aかbの少なくとも1つが真の場合に真</td>
</tr>
<tr>
<td>xor</td><td>a || b</td><td>aかbのどちらか1つだけが真の場合に真</td>
</tr>
<tr>
<td>!</td><td>!a</td><td>aが真の時に偽、偽の時に真</td>
</table>

例えば、ホームとフロントページどちらかが表示された時に表示したい場合は下記の様にコードを書きます。
```diff_php
if( is_home() || is_front_page()) {
//ホームもしくはフロントページだったら表示
}
```
`is_home()`と`is_front_page()`の間の`||`は上の表にある様に`どちらか一方の1つが表示されたら分岐する`となります。
ホームとフロントページで別々に処理したい場合は
```diff_php
if(is_home()) {
//ホームだったら表示
} elseif(is_front_page()) {
//フロントページだったら表示
}
```
となります。

複数の条件を満たして初めて処理が行われる様にする時の条件分岐です。
```diff_php
if(is_category('bookshelf') && has_tag('book')) {
    //bookshelfカテゴリに属していて、bookタグを持っている投稿を表示
}
```
# まとめ
プログラミングをやったことがないと、そもそも「if文」と言われても何のことかさっぱりわからないとなって、遠ざけてしまう事が多々あります（私も昔はそうでした）
でも何となく行いたい処理をコード化する前に「こういうことをしたい」とイメージしていけば、うまくいくものです。
はじめはキレイなコードでなくても、自力でif文が書けた（自分が思った通りの条件分岐ができた）と言う事がとても大切なので、キレイに書こうとするのではなく、自分の分かることを組み合わせてコード化していくのが、if文を覚えるキッカケになると思います。
本番環境でなければ、いくらでもエラー出して良いですからね。

10年以上WPでWEBサイト制作をしていますが、独学のため、色々間違えている個所などありましたらご指摘いただけますと幸いです。