WordPressの新着記事をJSON形式で取得し外部サイトで表示する方法

tmb_wp01

2016/5/29更新。WP REST API v2に対応した記事WP REST API v2 WordPressの新着記事をアイキャッチ画像付きで取得する方法を書きました。Ver2はまだベータ版ですが、合わせてご覧ください。当記事の内容は現時点でも有効です。Ver1はまだ使えます。

WordPressの公式プラグインを使うことで簡単にJSON形式のデータを取得できます。それを利用して、WordPress外のサイトに新着記事の情報を載せるなど、連携させることが可能です。WordPressで吐き出したJSONデータをPHPにて取得し表示する方法を記載します。

スポンサーリンク

WordPressのプラグインインストール

WP REST APIというのをインストールします。ダッシュボードから検索してインストールすればいいのですが、検索すると関係ないのが大量にヒットするし、検索結果の下の方に出てくるので注意が必要です。手動で公式サイトからダウンロードしてインストールしてもいいと思います。

wpapi

ちなみにこのプラグインはver2βがありますが私の環境ではうまくいかなかったので特に理由がない限りver1系でいいと思います。私がインストールしたのはver1.2.3でした。

JSONデータ取得方法

プラグインをインストールして有効化したら、自分のWordPressアドレスに/wp-jsonを付けてアクセスしてみてください。よくわからない文字の羅列が表示されると思います。当ブログの場合、https://webtatan.com/blog/wp-jsonで表示されます。

wp-json/postsで投稿情報が取れます。posts?filterに続けて条件を指定することで取得する情報を絞ることができます。最新の5件で絞る場合、posts?filter[posts_per_page]=5と書きます。当ブログの場合、https://webtatan.com/blog/wp-json/posts?filter[posts_per_page]=5です。

PHPでJSONデータを取得し加工する

まず、注意事項として、前述したJSONデータはデフォルトでは同じドメインのプログラムからしかアクセスできません。私の場合、同ドメインからの利用なので問題ないですが、別ドメインからアクセスする場合、CORS:クロスドメインなAjaxでJSON / JSONPの各種ブラウザ対応まとめなどを参考にしてください。私はまだよくわかっていませんが、通常、別ドメインからスクリプトで情報を取得できてしまうのはセキュリティ上問題があるので、許可されていなく、取得元サーバーで許可をする必要があるということです。ざっくり。

PHPでJSONデータ取得

//JSONのURLを格納する
$url = 'https://webtatan.com/blog/wp-json/posts?filter[posts_per_page]=5';
//ファイルの内容の読み込み
$json = file_get_contents($url);
//連想配列にする
$arr = json_decode($json,true);

file_get_contentsにJSONのURLを指定し取得します。取得したJSONデータをjson_decodeでPHPで扱えるようにします。第2引数をTrueにすると取得したデータを連想配列で格納します。Falseの場合、オブジェクト型で格納されます。CakePHPの場合、コントローラからビューに渡して表示処理をすれば完了です。

ちなみに記事タイトルは”title”、記事URLは”link”というキーで連想配列から取得できます。私のポートフォリオサイトの最下部にブログの最新5件を表示しています。

以上でございます。

スポンサーリンク

この記事が気に入っていただけたらシェアお願いします。励みになります。
prev CakePHP2.xをNetBeansでデバッグする方法(CentOS7) next jQueryでドロップダウンリストを自作する

スポンサーリンク

Comment

  1. いづ より:

    参考にさせていただきます!
    一つ質問なのですが、この手法で”カテゴリを指定して”記事を読み込むことは可能でしょうか?

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です