WordPressでAPI連携
要件としては、投稿ページ等にAPIで取得したデータを表示させたいということだったので WordPressのwp_remote_get関数を使って取得してみました。
wp_remote_get
wp_remote_get - WordPress Codex
使い方は簡単で、パラメータにURLを指定するだけでデータを取得することができます。
wp_remote_get('http://hogehoge.com/');
また、第2引数に配列でオプションを指定することも可能となります。
// timeoutを10秒に設定 wp_remote_get('http://hogehoge.com/', array('timeout' => 10))
戻り値は配列で返却され、headersやbodyなどがあり、データについてはbody内に格納されています。
※配列の詳細については、こちらを参照
ショートコード化
APIからデータを取得することはできたが、ページの好きな場所に表示させるにはどうしようかと 思ったところ、ショートコードを自作すれば任意の場所に表示させられるじゃないかと思い wp_remote_getで取得したデータをショートコード化してみました。
function.php
<?php ... function get_remote_by_hogehoge($args) { $url = 'http://hogehoge.com/' $url = empty($args) ? $url : $url . '?' . http_build_query($args); $arr = wp_remote_get($url); if (is_wp_error($arr) || $arr['response']) { // エラー処理 ... } $body = json_decode($arr['body']); // 以下省略 ... } add_shortcode('hogehoge', get_remote_by_hogehoge); ...
これで投稿ページ等に[hogehoge]と追加した場合に、データが表示されます。
また、[hogehoge param1=test]等、引数を指定した場合には
http://hogehoge.com/?param1=test
のように、クエリパラメータを付与できるようにしてみました。