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作ってみる 1,017 vi 記事:yukimaru
作ってみたの最新記事