ietty TECH blog

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のように、クエリパラメータを付与できるようにしてみました。