メンテを考えて、ファイルを分割

メンテを考えて、ファイルを分割
WebAPIをwordpressで使うとき
テンプレートファイルを改造するけど
このとき、テンプレートファイルそのものへ
ソースを書くより
各テーマのフォルダへ
WebAPIを扱う PHPファイルをアップしておいて
get_template_part()
で呼び出すようにしたほうが
後々メンテしやすくなります
ちなみに、引数には
PHPファイルを拡張子なして指定します
もし、test.phpなら
get_template_part(‘test’);
去年も、いくつかWebAPIが変更になり
コードの修正が必要になりました
このとき、すべてのAPIを一つのファイルにして
さらに、テンプレートファイルに書いてしまうと
変更するときに
探すのも面倒になります
しかし、各ファイルに分割してあれば
必要な部分の修正が用意になります
パソコンの部品も一体型でないなら
メモリやHDD、グラフィックボードなど
壊れた部品の交換だけですみますので
わかりやすいように、分割したほうが
メンテしやすくなります

wordpressでのWebAPI利用の仕方

wordpressでのWebAPI利用
リクエストパラメータへ値を指定するときに
コード内へ直線記述していくと
おなじようなコードを何種類も用意することになり面倒
このため、wordpressの
カスタムフィールド機能を使い
リクエストパラメータを
記事ごとに変えれるように設定
カスタムフィールドは、wordpressの各記事ごとに
指定が可能な、任意の設定値のこと
カスタムフィールドは、
名前と値の組み合わせからなり
名前と値は、自由に設定できる
wordpressで、WebAPIを使うには
記事ごとに
カスタムフィールドに
リクエストパラメータの値を設定しておいて
これを
WebAPIのリクエストパラメータとして
参照すれば、表示する情報を
記事やテンプレごとに使い分けることができる
カスタムフィールドの値を取得するときには
wordpressのテンプレタグの
post_custom()
を使う
post_custom()の引数へ
カスタムフィールドの名前を指定する

PHP出力の時のエスケープ

PHP出力の時のエスケープ
APIから取得しているデータを出力するときにほ、
セキュリティーを確保するため
htmlspecialchars()
を使い、エスケープするのがベスト
これは、scriptと見なされる特殊文字や記号を
無害化するために変換するもの
おもに、SQLの攻撃対策に使われることが多い
wordpressでも
esc_html()
esc_attr()
などで、エスケープすることが可能

HTMLて取得したデータをリスト表示

HTMLで、取得したデータをリスト表示するには
WebAPIで!一番使うのが
取得し多データをリスト表示するというもの
これをやるには、PHPでの処理が必須
やり方は少し複雑になる
まず、パースしたXMLデータは、オブジェクト型になっている
お店情報とか、画像など、いろいろあるけど
各項目は、個別に取り出して処理できる
このときに、使うのが
配列の値
一つずつ代入しなごら繰り返す foreach文
foreach文の繰り返し処理で
1件ごとにデータを取り出しながら
HTMLタグをつけ、ブラウザーで表示すれば
リスト表示できる
これは、Amazonや楽天などの
商品検索結果を出すのによく使う
ループしながら表示していくときに、
取得したデータ、例えばリンク先URLとか
住所、電話番号とかを表示するには
PHPの echo で表示していく
このとき、表示する個別データを指定するには
PHPのアロー演算子
->
を使う
例えば、繰り返すときのforeach()が
foreach($libraries as $library)
なら
$libraries の中身を $libraryへ配列の値を一つずつ
代入していく
ここで、住所を示すのが
address なら、
echo $library->address;
で住所が表示される
また、電話番号を示すのが
tel ならば
echo $library->tel;
で電話番号が表示される
そして、リンク先URLが
url なら
echo $library->url;
でリンク先urlになるし、
サイト名が site なら
echo $library->site;
そして、これらをaタグで組合せれば
リンクできるようになる
もし、階層が深いなら
->をつなげて指定する
例えば、
電話番号 telの下に
携帯mobile
非常用 emergency
があって、携帯のほうを出したいなら
echo $library->tel->mobile;
というかんじになる

var_dump()で中身確認

変数の中身を確認する方法
変数へ格納したオブジェクトの中身をみるには
var_dump()を使う
例えば、前回なら
$libraries = simple_xml_loadfile($url);
で$librariesへ格納しているので
中身をみたいなら
var_dump($libraries);
とすればok
これは、
配列、論理値などでもみることができる
WebAPIでは、中身の確認することが多いため覚えておくと
とても楽になる

simple_xml_loadfile()について

simple_xml_loadfile()について
simple_xml_loadfile()で、
リクエスを送信して、レスポンスをパースします
レスポンスのxmlデータは、
複数の項目がひとまとまりになっていて
そのままだと、個別の項目だけを選んで処理したり
表示することがてきない
例えば、お店情報なら
お店の名前の固まりになってしまうため
何の情報かわからなくなってしまう
そこて、使うのが
simple_xml_loadfile()
これで、PHPて処理しやすいオブジェクトにする
これを、XMLをパースするともいう
simple_xml_loadfile()の書式は
simple_xml_loadfile( リクエストURL );
となる
これを変数へ格納すれば、さらに使いやすくなる
$libraries = simple_xml_loadfile($url);
リクエストURLは、
$urlのように
変数へ格納しておいてから
引数へ指定すると
http://~
と書かなくていいので楽になる
これで、さらに今回の場合は
$librariesへオブジェクトを代入しているので
さらに扱いやすくなっている

WebAPIとリクエストURL

データをブラウザーへ表示するには、
PHPで処理する
WebAPIを使うには、リクエストURLを組み立てる必要がある
$url = ‘ベースURL’;
//パラメータ
$appkey = ‘アプリのAPI key’;
$pref=’都道府県名’;
$city=’市区町村’;
//リクエストURLを組み立てる
$url =”$url?appkey=$appkey&pref=$pref&city=$city”;
解説メモ
リクエストURLは、
ベースURLへ
?をつけて
パラメータを
&でくっつけていく
ほとんどの場合、API keyは必須
今回のリクエストURLは
変数だとわかりにくいから
例にしてみた
$url = ベースURL?appkey=アプリのAPI key&pref=都道府県名&city=市区町村
となる

PHP構文のメモ

PHPの構文のメモ
WebAPIを使うには、JavascriptやPHPが必要になります
まず!処理ができないと、せっかく楽しいプログラミングも
苦痛になります
おすすめなのは、
ドットインストールという動画サイトです
実際に動いているところも動画で見れますし
ソースコードも会員登録すれば見れます
ちなみに、会員登録は無料です
以下は簡単な構文のメモになります
echo
PHPで文字列を表示するのに使います
配列
0から数えていきます
なので、一番最初の値は、0番目となります
データの連結には
.
を使います
if~else文
もしも~ならという処理に作ります
構文は
if(条件){
//行いたい処理
}elseif(条件その2){
//条件その2になったときの処理
}else{
//それ以外のときの処理
}
たぶん、一番多く使います
ログインのチェックとかに使えます
foreach文
foreach( 配列 as 配列の値を一つずつ代入する変数){
//繰り返す処理
}
for文とにてるけど、1つずつ代入しながら繰り返す
のがポイントです
これは、WebAPIで、お店の名前とかが大抵は配列なので
これを一つずつ表示するのに使います

WebAPIとwordpress

WebAPIと組み合わせたwordpressサイトのページ生成
まず、サーバへリクエストがくる
リクエストを受け取ったwordpressがDBへ問い合わせする
DBから必要な情報が戻ってくる
DBから必要な情報を受け取ったwordpressが
WebAPIを提供する各社のサーバへ対してリクエストを送る
API提供者からレスポンス画返ってくる
wordpressが必要な情報と、APIレスポンスを組み合わせ、
HTMLページ生成
この一連の流れはPHPや
wordpressのカスタムフィールド機能を使う
このため、wordpressでカスタムフィールド関連プラグインを
入れておいたほうがやりやすい