説明
wp_remote_get() は、外部のURLにGETリクエストを送る関数です。外部APIからデータを取得するときに使います。
基本構文
wp_remote_get( string $url, array $args = array() ): array|WP_Error
引数
$url:リクエスト先URL$args:timeout、headers、sslverifyなど
戻り値
レスポンスの配列。失敗時は WP_Error。
使い方(サンプル)
$res = wp_remote_get( 'https://api.example.com/items', array( 'timeout' => 10 ) );
if ( is_wp_error( $res ) ) {
return;
}
$body = wp_remote_retrieve_body( $res );
注意点
is_wp_error()で失敗を必ず確認します。- タイムアウトを設定しないと、相手が遅いときにページ全体が遅くなります。結果は
set_transient()でキャッシュするのが定番です。 - HTTPステータスは
wp_remote_retrieve_response_code()で確認します。
実務での使いどころ
- 外部のAPI(天気、為替、他サイトのJSONなど)から、データを取得するとき。
- 取得した結果を
set_transient()で保存し、一定時間キャッシュするとき。 - 外部サービスの稼働確認など、HTTPのステータスコードを確認するとき。
よくあるミスと対処
- 戻り値が
WP_Errorの場合を考えていない。通信に失敗すると、配列ではなくエラーオブジェクトが返ります(判定にはis_wp_error()を使います)。 - ステータスコードを確認していない。404や500のときも、レスポンスの配列が返ります(取得には
wp_remote_retrieve_response_code()を使います)。 - レスポンスの本文を、配列から直接取り出している。
wp_remote_retrieve_body()を使います。 - ページを表示するたびに外部へリクエストしている。外部の応答が遅いと、サイト全体の表示が遅くなります(タイムアウトの既定は5秒です)。結果はキャッシュします。
- ユーザー入力のURLに使っている。宛先を検証する
wp_safe_remote_get()を使います。
NG例
$response = wp_remote_get( $url );
$data = json_decode( $response['body'], true ); // 通信に失敗したときに、エラーになる
OK例
$response = wp_remote_get( $url );
if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
return;
}
$data = json_decode( wp_remote_retrieve_body( $response ), true );
使い分け早見表
| 関数 | 使う場面 |
|---|---|
wp_remote_get() |
GETで取得する(宛先が固定のURL) |
wp_remote_post() |
POSTで送信する |
wp_remote_request() |
GET・POST以外のメソッドも指定して送る |
wp_safe_remote_get() |
宛先が、ユーザー入力や設定値で変わるGET |
関連項目
wp_remote_post()、wp_remote_retrieve_body()、set_transient()、wp_safe_remote_get()、wp_remote_retrieve_response_code()、wp_remote_request()、is_wp_error()
公式リファレンス:wp_remote_get() | Function | WordPress Developer Resources

コメント