WordPressでphpを扱うとき、変数が出てくると難しいと感じてしまいますが、WordPressをカスタマイズするには、最低限のphp知識と変数の扱い方を知っていたほうが良いです。
とはいえ、変数というものが出現すると、頭が痛くなるのが人間だと思います。
私がそうでしたから。(笑)
目次
当時、WordPressの勉強会に参加し、初心者コースに望んだところ、いきなり変数の話をされました。
例えばこれです。
$abc = 1
講師いわく、そんなに難しいですかね?でしたが、参加した人の殆どが「難しい」の反応でした。
英語に$マークがつくと難易度が上がるんです。(笑)
配列だとかグローバル変数だと、確かに頭の中でイメージしにくくなるので、どう考えればいいのかわからなくなりますが、変数単体だけだとさほど難しいものではない。と思っています。
変数で数値の足し算
普段、phpだけでなくExcelを使うため、VBAマクロを組んで作業の効率化をしています。なので、マクロでの変数の扱い方を例に挙げるとわかりやすいかと思います。
〜 VBA 〜
例えば、マクロであらかじめ変数aに3、変数bに4を格納したとしましょう。変数aとbを足し算して変数cに格納し、セルA1に入力するなら、以下のようなプログラムを組みます。
a = 3 b = 4 c = a + b Range("A1") = c
マクロを実際に組んでみると
マクロを実行すると、セルA1には 3 + 4 の計算結果 7 が入力されます。
〜 php 〜
phpでもあらかじめ変数に数値を格納して計算させるとこのような使い方になります。
$a = 3; $b = 4; $c = $a + $b; return $c;
phpの場合、後ろにセミコロン ; を付け、そして変数の内容を表示させるために return を使います。
実際に使用するのにこういう記述をします。
計算結果(上のショートコードで表示させています。)
7
エクセルならセルに、WordPressならこのページに表示させているだけなので、やっていることはほぼ同じですよね。
変数で文字の繋ぎ合わせ
今度はセルB4に入力された文字「おはよう」と、セルC4に入力された文字「ございます」を、それぞれ変数に格納して足します。そしてその結果をセルE4に入力します。
〜 VBA 〜
a = Range("B4") b = Range("C4") c = a + b Range("E4") = c
実行結果
図で表すとこういう感じですね。
〜 php 〜
セルのデータを取得するように、phpで投稿ページのタイトルを取得して変数に格納するなら、
$a = get_the_title();
そしてこのようにすると複数のタイトルを繋ぎ合わすことができます。
$a = get_the_title(825); $b = get_the_title(1500); $c = $a . $b; return $c;
get_the_title() の () の中には表示させたいページのIDを入れます。
ページID 825のタイトルと、ページID 1500のタイトルを繋ぎ合わせました。
見にくいですが、こうなります。
cssの必要性とクローラーhtmlには意味のあるタグと意味のないタグが存在する
当然ながら、VBAとphpではタグの記述ルールが違うので、 『 + 』 ではなく、ドット 『 . 』 で文字の繋ぎ合わせます。
データを取得するという面では、シンプルに考えると、WordPressとExcelの違いは、管理画面やサイト上にあるデータを取得するか、セルのデータを取得するかの違いです。
上の例のようにセルA1のデータを変数に格納する場合、Range(“A1”)としますが(もう一つの表現は Cells (1,1) )、WordPressの場合、取得したいデータの種類によってタグが変わります。
どういう情報を取得するかでどのようなタグを使うかは、また別に機会に書くとして、phpでの簡単な変数の扱いはこういうイメージになります。
スポンサードリンク
入力されたデータを変数で処理
上のイメージの②サイトページからデータを取得する変数の扱い方として、このサイトのヤフオクツールでの文章や選択項目の転送を例に上げていきます。
ヤフオクツールのページでは、htmlタグでphpに転送させるフォームを作っています。文字情報と選択項目にそれぞれ名前をつけてfunctions.phpに送信し、固定ページに表示させています。実践的な内容なので少しハードルが上がります。^^;
ざっくりと表すとこんな感じ。
<form method=“post”> <input name=“title”> ← 1行分の文章入力枠 <textarea name=“description”></textarea> ← 複数行入力できるテキストエリア <select name=“type”> ← ドロップダウン形式の選択 <option value=“ナロータイ”>ナロータイ</option> <option value=“スクエアタイ”>スクエアタイ</option> </select> </form>
タイトル、テキスト文章、選択内容をそれぞれfunctions.phpに送信するわけですが、
formタグに method=“post” とすることで、タイトル、テキスト文章、選択内容がfunctions.phpでデータとして受け取ることができます。
受け取ったデータは3種類なので、その中のどの項目を表示させるかを、name=”○○○”の ○○○ の部分と変数を使ってコントロールします。
functions.phpではこのようなコードを記述します。最初に出てきたやつです。
function title_func() { if(isset($_POST)){ $result = $_POST['title']; return $result; } } add_shortcode('title_output’, 'title_func');
何をしているかというと、
function title_func() { 〜処理内容〜 } add_shortcode('title_output’, 'title_func');
この記述で投稿画面に表示させるためのショートコードを作ります。
そして、処理内容は
if(isset($_POST)) (もし、postにデータが存在していれば…) $result = $_POST['title']; (postの中にあるデータtitleを変数resultに格納しなさい) return $result; (変数resultの内容を表示させなさい)
というアクションになります。
最初の行の
function title_func()と
最後の行の
add_shortcode(‘title_output’, ‘title_func’);
は投稿画面でphpをショートコードとして使用するためのショートコード名を記載するルールになっていて、{} で囲います。そして title_output を [title_output] とカッコをつけて投稿ページに入力します。
例えばタイトルを「新品のネクタイ」と入力したとしましょう。
<p>[title_output]</p>
このようにhtmlと組み合わせると
新品のネクタイ
と表示されます。
formの内容をfunctions.phpに送り、それを変数に格納してhtmlページに表示させているわけですが、
ページ冒頭で数値を変数に格納したように、直接変数にデータを格納するやり方もあります。
$result = ‘これは新品です’
というふうに。
ヤフオクページの出力ページでは、条件分岐ifを使って、必要な文章をページに表示させています。
ちなみに、phpはとてもデリケートなので、セミコロン;
$result = $_POST[‘title’] ;
これがないとサイトが画面が真っ白になるので気をつけましょう。
スポンサードリンク