WordPressを使うために必要なPHPの知識
他の記事でも紹介しましたがWordPressはPHPを使って作られているので、使用する際にPHPの知識があることが前提になります。
ただ、PHPのすべてを抑えなくてはならないわけではないので必要な部分のみ押さえておけばいいでしょう。
変数
JavaScriptなどと同じように一時的にデータをしまっておくための箱を作ることができ、一時的にデータをしまっておく箱を変数と呼びます。
変数はファイル内のPHPタグの中であれば好きなタイミングで作ることができ、好きなタイミングで上書きしたりすることもできます。
変数を使う方法はとても簡単で、「$」記号の後につけたい変数の名前をつけ、代入演算子「=」を使って値や要素を代入して使います。
呼び出すときは、変数名をそのまま記述する
変数の名前を付ける際のルール
- 使える文字は半角英数字とアンダースコア
- 変数名の先頭を数字から始めてはいけない
- 大文字と小文字は区別される
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php //基本的なひな形 $変数名=値; //変数numに数字の10を入れる $num=10; //変数numに文字列の10を入れる $num='10'; //HTMLの要素を入れることもできる $element='<p>段落</p>'; //呼び出すときは変数名で echo $element;//p要素が出力される //数値から始まる変数名はダメ $10feet='○○'; ?> |
配列
複数のデータを纏めてしまっておくための箱も作ることができまして、これを配列と呼びます。
名前の付け方は変数と同じだけど、データの格納方法が少し違い[]で囲んでデータ一つ一つをカンマで区切って記述します。改行を入れることもできるので縦に並べてもOK
入れたデータには0から始まる番号が割り振られてこの番号を[]で囲んでデータの取り出しをする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php //基本的なひな形 $配列名=['データ①','データ②','データ③','データ④','データ⑤']; //基本的なひな形改行ver $配列名=[ 'データ①', 'データ②', 'データ③', 'データ④', 'データ⑤' ]; //上記配列からデータ①を取り出す場合は $配列名[0]; ?> |
連想配列
連想配列は配列のデータに名前を付けたもの。JSにおけるオブジェクトにとても似ているけど別物で、名前の部分はkey(鍵)・値の部分はvalue(値)と呼ばれkeyを使ってvalueを受け取れる仕組みになっています。
※ keyとvalueは「=>」で区切って記述する
※ keyとvalueはセットでプロパティと呼ばれます
※ プロパティとプロパティを区切るときにはカンマを使って区切ります
1 2 3 4 5 6 7 8 9 10 11 |
<?php //基本的なひな形 $配列名=[ 'key①'=>'value①', 'key②'=>'value②', 'key③'=>'value③' ]; //上記配列からkey②のデータを取り出すのであれば $配列名[key②];//value②が入っている ?> |
関数
PHPにあらかじめ用意された命令のことを関数と呼びます。関数を呼び出すときは「関数名(パラメータ)」の形をとります
パラメータ部分を引数と呼ぶこともあります。関数によって使えるパラメータはバラバラなので関数ごとに覚えておくことが大事です。
一例ですが、PHPに用意されている関数を使って現在の日付を出力するのであれば
1 2 3 4 |
<?php $day = date('Y年m月d日');//現在の日付を取得し変数に入れる echo $day;//現在の日付が入った変数を出力 ?> |
date関数は現在の日時を取得してフォーマットで指定した形式で値を取得してくれる関数
Y | 年。4桁の数字 |
m | 月。2桁の数字。先頭にゼロをつける。 |
d | 日。2桁の数字。先頭にゼロをつける。 |
H | 時。2桁の数字。24時間単位で、先頭にゼロをつける。 |
i | 分。2桁の数字。先頭にゼロをつける。 |
s | 秒。2桁の数字。先頭にゼロをつける。 |
例えばdate(‘Y/m/d H:i:s’)で呼び出すと「2017/12/18 09:30:20」の文字列を取得してきます。
date(‘Y年m月d日 H時i分s秒’)で呼び出すと「2017年12月18日 09時30分20秒」の文字列を取得してきます。
JavaScript同様に関数は自作することもできユーザー定義関数とか呼んだりします。
WordPressでは関数を自作して内部的に行われる元々の処理を加工するときに使います。
※ フックとか呼びます
1 2 3 4 5 6 |
<?php //基本的なひな形 function 関数名(必要であれば引数){ 関数を呼び出したときに実行する処理 } ?> |
例えばで、引数に画像までのパスえお入れて呼び出したらimg要素として出力してくれる関数を作ってみました
1 2 3 4 5 6 7 8 9 10 11 |
<?php //関数の定義 function img_url($src){//呼び出し時に引数に入れたものが$srcに置き換わり処理が行われる echo '<img src="';//img要素の先頭部分を出力 echo $src;//パスを出力 echo '">';//img要素の最後の部分を出力 } //呼び出し img_url('img/sample.png');//引数にパスを入れて呼び出す ?> |
コードを簡素にしているのでalt属性は出てませんがimg要素が出力されるはずです
1 |
<img src="img/sample.png"> |
if文
「もし○○だったら̻△△する」のように条件によって処理を変えたいときに使う条件分岐の一つ
条件に当てはまらなかったときの処理や複数の条件も設定することができる
条件に当てはまらなかったときの処理はelse文
複数の条件はelseif文の()の中に記述する
使い方、考え方はJavaScriptとほとんど同じ
WordPressでは記事を出力したり、ページを判定するために使用したり結構使用頻度は高めになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php //基本的なひな形 if(条件){ //条件に当てはまった時の処理 } if(条件){ //条件に当てはまった時の処理 }else{ //条件に当てはまらなかったときの処理 } if(条件1){ //条件1に当てはまった時の処理 }elseif(条件2) //条件2に当てはまった時の処理 }else() //条件に当てはまらなかったときの処理 } ?> |
この書き方だとHTMLを出力するとき毎回echoしなくてはならないのであまりおすすめできません。
PHPの処理だけで完結するのであればこちらの処理を使うようにすると良いと思います
PHPならではの書き方
WordPressでよく使われるif文の形は上記の書き方ではなく{}を省略する違う書き方が主流になっていますのでそちらを覚えましょう。
ルール
- 条件式の後は{}の代わりに「:」を使う
- 最後はendifで終わる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php //基本的なひな形 ?> <?php if(条件):?> 条件に当てはまった時の処理 <?php endif;?> <?php if(条件):?> 条件に当てはまった時の処理 <?php else:?> 条件に当てはまらなかったときの処理 <?php endif;?> <?php if(条件1):?> 条件1に当てはまった時の処理 <?php elseif(条件2):?> 条件2に当てはまった時の処理 <?php else:?> 条件に当てはまらなかったときの処理 <?php ebdif;?> |
違いは分かりにくいですが機能はは同じif文です。比較用のコードも張り付けておきますが、どうしてもいやなら使わなくていいと思います
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php //得点によって出力内容を変えるif文 $score=80;//得点を変数に入れる //従来のif文 if($score > 50){ echo '<p>点数は',$score,'点だったので<strong>合格</strong>です!'</p> }else{ echo '<p>点数は',$score,'点だったので残念ながら<strong>不合格</strong>ですね'</p> } //今回紹介したif文 ?> <?php if($score > 50):?> <p>点数は<?= $score;?>点だったので<strong>合格</strong>です!</p> <?php else:?> <p>点数は?=$score;?>点だったので残念ながら<strong>不合格</strong>ですね</p> <?php endif;?> |
for文
ループと呼ばれる処理の一つで指定した条件通りの処理を指定した回数繰り返すときに使う構文で、数値を選択してもらうセレクトボックスを作る場合なんかに便利だったりします。
WordPressではほかのループ文を使うことがほとんどなのであまり活躍の機会はありませんが簡単に紹介しておきます。
1 2 3 4 5 6 7 8 9 |
<?php for(初期値;条件式;更新処理){ 繰り返す処理; } ?> //{}を使わないendforを使った書き方もできます <?php for(初期値;条件式;更新処理):?> 繰り返す処理 <?php endfor;?> |
初期値
forループの開始時に最初に一度だけ行う処理。繰り返しに使う変数の初期値を設定する。よく使われる変数は$i
初期値はあくまでも数値が入った変数なので処理の中でも使える
条件式
繰り返し行うかどうかを判定するために式を設定する。条件式の結果がtrueの間は繰り返しを行いfalseになったら終了する。 大なり小なりを使って式を指定することが多い
更新処理
ループが終わって繰り返しのたびに行う処理を書く。大体の場合は繰り返す処理に使う変数の値を増減する。これによって条件式の結果が変わるようになる。よくある指定方法で初期値に1ずつプラスする形をとる場合が多い
セレクトボックスを作るならってな感じのコードを乗せておきます
1 2 3 4 5 |
<select name="count"> <?php for($i=1;$i<=10;$i++):?> <option value="<?= $i;?>"><?= $i;?></option> <?php endfor;?> </select> |
「$i」には必ず数値が入るようになっています。初期値は1
1.まずは繰り返す条件をチェックします「$i」は10以下なのでtrueなので処理を実行します
2.この初期値をvalue属性の中とoptionタグの中に出力します
3.出力が終わったら$iに1を加算します。
4.$iは2なのでまだ10以下でtrueですので処理を実行します。
5.出力が終わったら$iに1を加算します。
といった具合に処理ごとに変数の値を増やしていき、条件が成立している限り繰り返してくれます
このコードでは$iが11になったらfalesになるので1~10までのセレクトボックスが出力されるようになります。
while文
while文はfor文と同じくループ処理をする構文の一つで、条件式がtrueの間処理を繰り返す。for文とは書き方が違うので注意が必要。
WordPressでループ処理をするならこのwhile文をつかうようになっていますので必ず使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php //ひな形 初期値 while(条件式){ 繰り返し処理 更新処理 } ?> //{}を使わないendwhileを使った書き方もできます <?php 初期値;?> <?php while(条件式):?> 繰り返す処理 <?php 更新処理;?> <?php endfor;?> |
それぞれに入れる値はfor文と同じ。for文との違いは()内には条件式しか入れられないので処理の前に初期値を設定し、処理の最後に更新処理を記述する。更新処理を記述しないと無限ループになり半永久的にカウントが増え続けます。
この処理は決しておこなってはいけません。なぜなら、半永久的に実行されるということは、処理が終わらないため、プログラムに負荷が掛かりクラッシュしてしまうからです。
WordPressではwhile文の設定はWordPress専用の関数とendwhileを組み合わせて使うことが多いので、WordPressで使うなら必ず出てくるものだと思って頂きたい
foreach文
foreach文は配列用のループ文の仲間で、配列内のデータを一つずつ取り出して、なくなるまで繰り返し実行するループ文です。普通の配列と連想配列の場合書き方に違いが出てくるので、使っているデータが何なのか把握しながら使いましょう
普通の配列の場合
1.配列に入っている先頭のデータを一つ取り出して変数に格納します。
2.格納したデータを使った処理をします。
3.処理が終われば次の配列のデータを新たに格納します。
4.格納したデータを使って処理をします。
この繰り返しを配列のデータがある限り続けます。
1 2 3 4 5 6 7 8 9 10 |
<?php foreach( 処理したい配列 as 処理したデータを入れたい変数 ){ データを入れた変数を使った処理; } ?> //{}を使わないendwhileを使った書き方もできます <?php foreach( 処理したい配列 as 処理したデータを入れたい変数 ):?> データを入れた変数を使った処理 <?php endforeach; ?> |
1 2 3 4 5 |
<?php $dogs = ['ボーダーコリー','シベリアンハスキー','ダルメシアン']; foreach($dogs as $item):?> <p><?=$item;?></p> <?php endforeach;?> |
日本語で簡単に説明すると
1.$dogsの配列0番目のボーダーコリーを$itemに格納
2.$itemをp要素で囲んだものを出力
3.$dogsの配列1番目のシベリアンハスキーを$itemに格納
4.$itemをp要素で囲んだものを出力
5.$dogsの配列2番目のダルメシアンを$itemに格納
6.$itemをp要素で囲んだものを出力
7.配列のデータがなくなったので処理を終了する
1 2 3 |
<p>ボーダーコリー</p> <p>シベリアンハスキー</p> <p>ダルメシアン</p> |
連想配列の場合
連想配列をforeach文を使って処理をする場合()内に入れるものが増えます。 ただキーの部分も処理中で使えるようになるので文法的には長くなりますが、やれることはすごく増えます。
1 2 3 4 5 6 |
<?php //基本的なひな形 foreach(配列名 as キーを入れる変数 => データを入れる変数){ キーの変数とデータの変数を使った処理; } ?> |
キーの部分には大抵$keyという変数名をつけることが多いのでそれに習ってキーは$keyに格納。
データの部分はそのデータが何なのかわかりやすい変数名を付けてあげるといい。今回は$dataにしてみる。
1 2 3 4 5 6 7 8 9 10 11 |
<?php $blood_types = [ 'A' => 'A型',//1回目の処理で使えるデータ 'B' => 'B型',//2回目の処理で使えるデータ 'O' => 'O型',//3回目の処理で使えるデータ 'AB' => 'AB型'//4回目の処理で使えるデータ ]; ?> <?php foreach($blood_types as $key => $data):?> <?= $key; //キーを書き出し?><?=$data;//データを一つずつ書き出し?><hr> <?php endforeach;?> |
WordPressでは任意のページを出力するときに使ったりすることもありますので一応抑えておきましょう