WordPressのファイルやサイトなどで紹介されているコードを見ると、よく「echo」という文字を見ませんか?
echo自体はそれほど難しいものではなく、ただ、「文字列を出力する」ものなんですが、問題は、HTMLと変数・関数を一緒に出力する場合です。
というのも、WordPressはPHPというプログラミング言語で動くCMSですが、HTMLとCSS(とjavascript)のコードを書くことが多いので、「ん?echoってなんぞや?」となるわけです。
ただ、最近、オリジナルテーマを自作する上で、このechoとの上手い付き合い方がわかってきました。
そこで今回は、「うわ、echoってやつ出てきた…もういいや」となっている方向けに詳しく解説します。
echoの基本的な使い方
まず、echoの基本的な形を見てみましょう。
変数や関数を出力する場合
echo 〇〇;
意味は、「〇〇を出力する」です。
サンプルコード
$aisatsu = '私はBABYMETALファンです。'; //変数aisatsuに「私はBABYMETALファンです。」という文字列を入れる
echo $aisatsu;
//出力結果 私はBABYMETALファンです。
文字列を出力する場合
echo '〇〇';
文字列を出力する場合は、シングルクォーテーション(”)で囲むだけです。
ポイントは、シングルクォーテーションで囲まれた部分がそのまま出力されること。後述しますが、変数や関数などもそのまま文字列として出力されます。
サンプルコード
echo 'はじめまして。BABYMETALです。';
//出力結果 はじめまして。BABYMETALです。
ダブルクォーテーションよりもシングルクォーテーション
ちなみに、
echo "";
と、ダブルクォーテーション(””)で囲む形でもOKですが、
<div class="test">
などの””と共存するために\をつける必要があり、理解しづらいと思うので、シングルクォーテーション(”)を使うことをおすすめします。
変数・関数と文字列を一緒に出力する
さて、ここからが本題です。echo自体は難なく理解できるはずですが、実際に使うとなると、中には理解しづらいケースもあると思います。
例えば、下記のコード。
$name = 'BABYMETAL'; // 変数nameに「BABYMETAL」を入れる
echo '私は$nameファンです。';
この出力結果は、「私はBABYMETALファンです。」ではなく、「私は$nameファンです。」となります。
なぜなら、変数(や関数)がただの文字列として出力されるため、変数が使えないからです。
では、一体どうすればいいのかというと、話は簡単です。
先述の通り、
- 変数や関数を出力する場合は記号なし
- 文字列を出力する場合はシングルクォーテーションで囲む
というルールがあるので、「文字列と変数・関数を別々に出力」すればいいだけです。
具体例
$name = 'BABYMETAL'; // 変数nameに「BABYMETAL」を入れる
echo '私は'$name'ファンです。';
コードを見ると、
- 「私は」を文字列として出力(シングルクォーテーションで囲む)
- $nameを変数として出力(記号なし)
- 「ファンです」を文字列として出力(シングルクォーテーションで囲む)
という形になっているのがわかるはずです。
文字列と変数・関数の間にはピリオドが必要
ただ、ここで1つ問題が。実は、上記のコードだとエラー になってしまいます。文字列は文字列で、変数は変数で出力されるはずなのに。
これを防ぐためには、「文字列」と「変数(や関数)」の間にピリオドをつければOKです。
なぜ、ピリオドなのかという具体的な解説はできませんが、ピリオドが「隣同士を連結させる役割」を果たします。
具体例
下記が正しいコードです。
$name = 'BABYMETAL'; // 変数nameに「BABYMETAL」を入れる
echo '私は'.$name.'ファンです。';
//出力結果 私はBABYMETALファンです。
当初、変数や関数を’.〇〇.’という形で囲むと勘違いしていたのは内緒の話です。
カンマでもOK
先ほどのシングルクォーテーション、ダブルクォーテーションの話と同じく、ピリオドではなくカンマを使ってもOKです。(これに関しては、本当にどちらでもいいです)
変数・関数とHTMLを一緒に出力する
変数・関数と文字列を一緒に出力する仕組みを理解できれば、HTMLと一緒に出力する仕組みも理解できたということになります。
なぜなら、HTMLはマークアップ言語なので、プログラミング言語のPHPと違い、ファイルには普通のテキストのように書くからです。
つまり、
<p>私はBABYMETALファンです。</p>
というコードを書く場合は、そのままシングルクォーテーション(”)で囲むだけでOKです。
echo '<p>私はBABYMETALファンです</p>';
出力結果は<p>私はBABYMETALファンです</p>
になりますが、それがファイルで読み込まれて出力される場合にHTMLコードとして出力されるという仕組みです。
そして、変数(や関数)と一緒に出力する場合も同じです。
$name = 'BABYMETAL'; // 変数nameに「BABYMETAL」を入れる
echo '<p>私は'.$name.'ファンです</p>';
$keywords = 'BABYMETAL'; // 変数keywordsに「BABYMETAL」を入れる
echo '<meta name="keywords" content="'.$keywords.'">';
HTMLコードをechoで出力する時の考え方
もしかすると、「じゃあ、全部のHTMLコードをechoで呼び出せばいいんじゃないの?」と思う方もいるかもしれませんが、それはケースバイケースです。
変数や関数を多用しているなら、すべてのコードをechoで出力した方が楽ですし、ほぼHTMLコードなら、一部だけechoで出力した方が楽です。
こんな感じで。
<a href="<?php echo home_url(); ?>/">MORIAWASE</a>
ここら辺は、
- 管理が楽かどうか
- 見やすいかどうか
などを意識して使い分ければいいので、そこまで難しく考えなくても大丈夫です。
以上、ご参考までに!(`・ω・´)ゞ