WordPressで簡易API作ってみる

2017年03月04日(土) 558 vi

WordPressで簡易API作ってみる

wordpressのサイトをAPI化できないかなぁと模索していたところ、
プラグインで「WP REST API」というのがメジャーどころとしてあるみたい。

どんももんか試しに使ってみたところ、自分の頭じゃよくわかんなかった…orz
API化したときに一般的にも公開されてる状態で、非公開状態にするにはあれやこれやと必要っぽかった…

そんなこんなで、自分が必要と思う情報くらいはちゃちゃっと用意できる簡易的なAPIを考えてみた。

■手順1.ディレクトリの用意

wordpress がインストールされている階層には
・wp-admin
・wp-content
・wp-includes

やらあると思いますが、ここと同じ階層に、てきとうに「api」ディレクトリを設置。
中に、index.phpを設置。

例えばURLが「http://sample.com」の場合、
「http://sample.com/api/index.php」で設置ファイルの中身が表示されるようにする。
この時点では、まだ中身が何もかかれてないないから真っ白のまま。

今回は、特定のカテゴリーの記事を表示させる例で作ってみたので、
url的には、以下のように考えてみる。

「http://sample.com/api/index.php?cat=カテゴリのスラッグ&cnt=件数pass=パスコード」

■手順2.設置してあるwordpressのデータを読み込む

/api/index.php のファイルに以下を記載。

require_once( dirname( __FILE__ ) . '/../wp-load.php');

これを記載するとwordpressのデータを読み込めるようになるため、
wordpressの関数などが使えるようになる。

wordpressのテーマをつくるときのように、
特定のカテゴリーの記事を抜き出したり、画像を表示させたりするようなソースをえがく。

これに 「$_GET[cat]」やら「$_GET[cnt]」の値を取得して、組み合わせる。

■手順3.jsonに変換する

json化するには、以下を記載。

header("Content-Type: text/javascript; charset=utf-8");

そして「json_encode」という関数があるので、この関数を使用するために、変換用の配列を用意する。
つまり、

echo json_encode($json_array);

こんな感じで簡易的にwordressのAPIとしてつかえるかなぁとおもい作ってみた。

■手順4.特定の人にしかみられないようにしてみる

「$_GET[pass]で取得した値が一致しているかどうか、とか、
/api/のディレクトリ自体をパーミッション変えてみるとか、
ベーシック認証かけるとか、やりかたはさまざまできるかなと思います。

さっそく知人に使ってもらい具合を確かめてもらってます。
慣れれば、wordpressのテーマをつくるのと同じようにいろいろ作れそうな気がします。

WordPressで簡易API作ってみる 558 vi  記事:yukimaru

作ってみたの最新記事