この記事では、WordPressを構築するうえで、最低限必要なPHPの基礎的な知識について解説していきます。
WordPressでの実際の使用例なども紹介しております。
PHPの書き方の基本
ファイルの拡張子
HTMLファイルの場合
HTMLファイルの場合、「index.html」のようにドットの後ろにつく拡張子が「html」になります。
index.html
HTMLファイルは別名「静的ページ」ともいわれます。
1つのページに対して1つのHTMLファイルが必要です。
PHPファイルの場合
PHPファイルの場合、「index.php」のようにドットの後ろにつく拡張子が「php」になります。
index.php
なお、PHPで処理するをするページのことを「動的ページ」、PHPで生成されているサイトのことを「動的サイト」とも言います。
PHPの記述の開始と終了
<?php
// ここに処理を記述
?>
HTMLタグの最中にPHPを書く場合、下記のようになります。
<p>テキスト</p>
<?php
// ここに記述
?>
<p>テキスト</p>
phpファイルの最後がPHPで終わる場合は、下記のように最後の?>
は省略可能です。
ただ、思わぬバグにもつながる可能性もあるので、基本的には ?>
で閉じることをおすすめします。
<p>テキスト</p>
<?php
// ここに記述
コメントアウト
コメントアウトの方法は2種類あります。
1行のコメントアウト
<?php
// 1行のコメント
?>
<?php
// 1行のコメント
// 1行のコメント
// 1行のコメント
?>
複数行のコメントアウト
<?php /*
複数行のコメント
複数行のコメント
複数行のコメント
*/ ?>
きれいなソースコードにするために
もうひと工夫で脱初心者!
上記「複数行のコメントアウト」にあるように、<?php /* コメントアウト */ ?>
とphpを使ってコメントアウトをすると、実際の検証ツール等で見るソースコードには表示されません。
実際にコードを触るコーダーにとってはわかりやすくなり、外部に対してはコメントの無い綺麗なコードで見えます。是非実践してみてください!
文字列の表示
<?php echo 'Hello world'; ?>
文字を表示させるには「echo」(エコー)を使用します。
この表示(出力)させたい文字のことを「文字列」と呼びます。
文字列は、「’」(シングルクォーテーション)、または「”」(ダブルクォーテーション)で囲みます。
文字列の連結
<?php echo 'Hello' . 'world'; ?>
文字列と文字列を連携させるには、「.」(ドット)を使います。
セミコロンで文を分離
<?php
echo 'Hello world';
echo 'Hello world';
echo 'Hello world'
?>
文の最後に「;」(セミコロン)をつけることで、文を分離できます。
最終行のセミコロンは省略できます。
変数
変数とは?変数の宣言と代入
$sample = "Hello World";
上記コードを日本語として表すと、「sample」という変数に、文字列「Hello World」を代入するという意味になります。
「変数」とは、一時的に値を保存しておくための「箱」のようなものです。
「sample」という箱に、「Hello World」というものを入れておくイメージです。
以下、変数に関して覚えておきたいことです。
- 最初にドルマーク「$」をつけて変数を作成(宣言)する。
- 変数の最初の文字に数字をつけることはできない。
※ダメな変数の宣言例:$1sample = "Hello World";
- 変数に値をつなぐには、半角の「=」(イコール)を使う。
- 変数に値を入れることを「代入」という。「等しい」の意味ではないので注意!
変数の出力
<?php
$sample = "Hello World";
?>
<!-- Hello Worldと出力 -->
<p><?php echo $sample ?></p>
代入した文字列をWebサイトなどの実際の画面上に表示するためには、echoと組み合わせて出力します。
変数の上書き
<!-- 変数sampleに「Hello World」を代入 -->
<?php
$sample = "Hello World";
?>
<!-- Hello Worldと出力 -->
<p><?php echo $sample ?></p>
<!-- 変数sampleに「Hello Web」を再代入 -->
<?php
$sample = "Hello Web";
?>
<!-- Hello Webと出力 -->
<p><?php echo $sample ?></p>
代入済みの変数に対して新たに値を代入すると、上書きされます。
なお、「変数を宣言しているのに違う文字が出力される」などの沼にハマることもあるので、同じ変数は利用しないようにするのをおすすめします。
変数を使った連結
変数を含めた文字列の連結については、シングルクォーテーションであるかダブルクォーテーションであるかによって記述方法が変わります。
シングルクォーテーションの場合
シングルクォーテーションの場合、「.」(ドット)で文字列を連結して出力することができます。
$name = "tanaka";
echo '私の名前は' .$name. 'です。';
[出力結果]
私の名前はtanakaです。
ダブルクォーテーションの場合
ダブルクォーテーションで囲むと、その中で変数を連結できます。
下記すべて同じ出力結果になります。
$name = "tanaka";
echo "私の名前は $name です。";
echo "私の名前は ${name} です。";
echo "私の名前は {$name} です。";
クォーテーションの違いと変数展開
下記のようにシングルクォーテーションで囲んだ場合、うまく出力されません。
文字列の中に変数の値を組み込むことを「変数展開」というのですが、この変数展開がうまく行われないためです。注意しましょう!
echo '私の名前は $name です。';
echo '私の名前は ${name} です。';
echo '私の名前は {$name} です。';
[出力結果]
私の名前は $name です。
私の名前は ${name} です。
私の名前は {$name} です。
配列
配列は、似たようなデータを一つの名前で管理したい時に便利です。
ひとつの箱にいくつかの似たようなデータを入れ込んでおき、必要な時に必要なものだけを取り出せます。
基本の書き方
$colors = array('red','blue','yellow');
PHP5.4以上なら、array
を使わずに、[ ]で置き換えることができます。
$colors = ['red','blue','yellow'];
配列の出力方法
echo $colors[0]; // red
echo $colors[1]; // blue
echo $colors[2]; // yellow
値を取り出すには、「[]」(ブラケット)を使い、順番を指定して取り出せます。 配列の要素には、先頭から順番に0,1,2,3…と0から始まります。 0を指定した場合は1つ目の値、2を指定した場合は3つ目の値が出力されます。
次のように順序を指定して要素ごとに値を代入することも可能です。
$color[0] = 'red';
$color[1] = 'blue';
$color[2] = 'yellow';
echo $color[1]; // blueと出力される
次のように、空の「[]」を使うと 先頭から順に値が代入されます。
$color[] = 'red';
$color[] = 'blue';
$color[] = 'yellow';
echo $color[2]; // yellowと出力される
連想配列
連想配列とは、配列をさらに強化したようなものです。
配列と同様に、ひとつの箱にいくつかの似たようなデータを入れ込んでおき、必要な時に必要なものだけを取り出せます。
基本の書き方
$members = [
"tanaka" => "Tanaka Taro",
"sato" => "Sato Hanako"
];
$members = array(
"tanaka" => "Tanaka Taro",
"sato" => "Sato Hanako"
);
「,」(カンマ)で区切って指定します。
連想配列の出力方法
echo $members["tanaka"]; // Tanaka Taroと出力
echo $members["sato"]; // Sato Hanakoと出力
条件分岐の処理
ある条件にしたがって処理を分岐させたいときに使います。
if文の書き方の基本
<?php
if(条件){
//条件を満たした時の処理
}
?>
条件を処理した結果がtrueなら「条件を満たした時の処理」が実行され、そうでないときは何も処理されません。
elseifとelse
<?php if(): ?>
<!-- 処理1 -->
<?php elseif(): ?>
<!-- 処理2 -->
<?php else: ?>
<!-- 処理3 -->
<?php endif; ?>
elseifは、条件を追加するときに使います。
elseは、ifの条件を満たさなかったときに実行する処理を書きます。
なお、条件処理を続ける際はコロン(:)とセミコロン(;)を使って処理をつなぎます。
処理が続く際はコロン(:)、処理が終わる際はセミコロン(;)を使います。
使い分けに注意しましょう。
比較演算子
比較演算子 | 記述例 | 意味 |
---|---|---|
== | a == b | aとbの値が等しい |
=== | a === b | aとbの値が等しく、型も等しい |
!= | a != b | aとbの値が等しくない |
<> | a <> b | aとbの値が等しくない |
!== | a !== b | aとbの値、もしくは型が等しくない |
> | a > b | aはbより大きい |
= | a >= b | aはbより大きい、または等しい |
< | a < b | aはbより小さい |
<= | a <= b | aはbより小さい、または等しい |
比較演算子は、左側(左辺)と右側(右辺)に指定した数値や文字列を比較して、等しいか等しく無いか、大きいか小さいかなどを比較します。
論理演算子
論理演算子 | 記述例 | 意味 |
---|---|---|
&& または and | a && b | aとbの両方ともtrueの場合 |
|| または ! | a || b | aとbのどちらかがtrueの場合 |
! | !a | aがtrueならばfalse |
論理演算子では、 左側(左辺)と右側(右辺)に指定した内容を見て、その条件に当てはまるかどうかを見ます。
if文を使ったWordPressでの仕様例
WordPressで利用する場合、下記のような書き方が多いです。
例:topページ、お問い合わせページ、その他のページそれぞれで表示内容を変えたい時
<?php if( is_front_page() || is_home() ): ?>
<!-- topページに表示させたい内容 -->
<?php elseif(is_page('contact')): ?>
<!-- お問い合わせページに表示させたい内容 -->
<?php else: ?>
<!-- それ以外に表示させたい内容(入れる内容がなければ空でも可) -->
<?php endif; ?>
例2:ある投稿のサムネイルが設定されている場合は設定したサムネイルを表示し、サムネイルが設定されていない場合はdummy画像を表示したい時
<div class="img_area">
<?php if (has_post_thumbnail()) : ?>
<?php echo get_thumb_img(); ?>
<?php else : ?>
<img src="<?php echo get_template_directory_uri(); ?>/assets/img/dummy.jpg" alt="NO IMAGE">
<?php endif; ?>
</div>
繰り返しの処理
ある条件にしたがって処理を繰り返したいときの処理についてです。
WordPressでは主に、「while文」もしくは「foreach文」を使うことが多いです。 他にも「for文」もありますが、WordPressではあまり見かけない処理なのでここでは省きます。
「while文」
while文の書き方の基本
<?php while(条件): ?>
<!-- …略… -->
<?php endwhile; ?>
「while」は処理を繰り返すときに使われるPHPの命令で、「while」で始まり「endwhile」で終わるという構造になっています。
while文は「指定の条件を満たすまでのループ処理」が得意です。 条件を満たすまで実行し続けるので、無限ループ(ブラウザがずっと読み込む状態)を引き起こしやすいので注意が必要です。 無限ループとなった場合、指定している条件がおかしくないかチェックしましょう。
while文を使ったWordPressでの仕様例
例えばブログサイトなどに多くある「投稿一覧のページ」。 このページでは、投稿記事の数だけ、WordPressから投稿を呼び出して表示させる必要があります。
下記の記述の結果として、1ページ内に投稿をずらっと一覧表示されます。
例:もし投稿があるなら、その投稿を繰り替えして表示するという処理。
<?php if (have_posts()) : ?>
<?php while (have_posts()) : ?>
<?php the_post(); ?>
<!-- 繰り返し行いたい処理 -->
<?php endwhile; ?>
<?php endif; ?>
ちなみに省略して書くことも可能です。
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<!-- 繰り返し行いたい処理 -->
<?php endwhile; endif;?>
上から順にサクッと解説!
- have_posts()
次の投稿があるか調べる記述です。
have_posts()
ですが、実はhave_posts() == true
を省略した書き方になります。
簡単に訳すと、have_posts()
が「投稿があるのかどうか」を探す処理であり、それが「true」、ようは「投稿がある状態」ということになります。
なお、この関数には括弧の中に何かを記述すること(パラメーターの指定)はできません。 - the_post()
実はすごく重要な役割を持っているタグですthe_post()
にはループ内で値をカウントアップする役割があります。イメージとしては投稿を順に取得し、カウンタを1ずつ加算していく感じのタグです。
「foreach文」
foreach文の書き方の基本
<?php foreach (配列 as 値を入れる変数) :?>
<!-- 繰り返し行いたい処理 -->
<?php endforeach; ?>
「foreach」は処理を繰り返すときに使われるPHPの命令で、「foreach」で始まり「endforeach」で終わるという構造になっています。
foreach文を使ったWordPressでの仕様例
WordPressで利用する場合、下記のような書き方が多いです。
while文と同じく、投稿一覧ページを作成したい時。 下記の記述の結果として、1ページ内に投稿ずらっと一覧で表示されます。
<?php
$args = array(
'posts_per_page' => -1, // 表示したい投稿数を記述。この場合は全件表示。
'post_type' => 'post', // 取得したい投稿タイプを記述。この場合は「投稿」から取得する。
);
$my_posts = get_posts($args);
?>
<?php foreach($my_posts as $post): setup_postdata($post); ?>
<!-- 繰り返し行いたい処理 -->
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
上から順にサクッと解説!
- $args = array( )
取得したい投稿タイプや、表示したい投稿数を配列として$argsに保存。 「$args」は任意の文字でも可。 - get_posts()
get_postsの引数として括弧内に、取得したい内容を記述すると、投稿記事を全件取得し、$my_posts に保存するということになります。 今回の場合、$argsの中身を保存しています。 - setup_postdata($post);
投稿情報をグローバル変数へセットする関数で、今からこの記事を使いますよという状態。
ちなみに注意しておくべき点として、setup_postdata()ではなく、setup_postdata($post)でひとつのテンプレート関数として覚えておくといい。 setup_postdata($anny)とかにすると、うまいこと表示されないことがあります。 - wp_reset_postdata();
この処理では、 $post の内容をクリアにしています。 実は $post 変数はグローバル変数と言い、WordPress内の全体で共有している変数です。 その変数を上書きしていまっているので、それを自分が使う前の状態に戻す処理にしています。 これを記載していないとあとあと不具合を起こす可能性があります。
おすすめ書籍紹介
最後に、WordPressを始めたい・構築したいという方へ、おすすめの本をご紹介します!
WordPress 仕事の現場でサッと使える! デザイン教科書 (Webデザイナー養成講座)
上記の書籍は、本サイト「WPWeb」の記事作成者やエンジニアからも評判の本で、日頃の実務でも参考にしています。
これからWordPressを学習する初級者を対象に、サイト構築の手順、独自テーマの作成、カスタマイズや運用など、クライアントワークで使われる基本的なWordPressのノウハウが解説されています。
例えば、記事ページを作りたい場合、作りたい記事ページのイメージ絵と、どういった記述をすることでタイトルや文章を呼び出してこれるのかなど、具体的でわかりやすいです。
最近のWordPressを活用するなら学んでおきたい「Gutenberg(ブロックエディタ)」に対応しているも嬉しいポイント!
お値段は3000円未満と少々高めですが、これ一冊で初心者は脱出できます。ぜひ!