説明
wp_remote_post() は、外部のURLにPOSTリクエストを送る関数です。
基本構文
wp_remote_post( string $url, array $args = array() ): array|WP_Error
引数
$url:リクエスト先URL$args:body、headers、timeoutなど
戻り値
レスポンスの配列。失敗時は WP_Error。
使い方(サンプル)
$res = wp_remote_post( 'https://api.example.com/send', array(
'body' => array( 'name' => 'taro' ),
'timeout' => 15,
) );
注意点
- JSONで送るときは、
headersにContent-Type: application/jsonを指定し、bodyにwp_json_encode()の結果を渡します。
実務での使いどころ
- 外部のAPIへ、データをPOSTで送信するとき(フォーム、Webhookなど)。
- JSONを送信するとき(
Content-Typeを指定)。
よくあるミスと対処
- JSONを送るのに、
bodyへ配列を渡している。配列は、フォーム形式(application/x-www-form-urlencoded)で送られる。JSONは、wp_json_encode()で文字列にして、Content-Typeも指定する。 - 戻り値が
WP_Errorのときと、ステータスコードを、確認していない。 - 応答を待たなくてよい処理で、
blockingをfalseにしていない。
NG例
wp_remote_post( $url, array( 'body' => array( 'name' => '太郎' ) ) ); // 相手がJSONを期待していても、フォーム形式で送られる
OK例
$response = wp_remote_post( $url, array(
'headers' => array( 'Content-Type' => 'application/json' ),
'body' => wp_json_encode( array( 'name' => '太郎' ) ),
'timeout' => 15,
) );
if ( is_wp_error( $response ) ) {
return;
}
使い分け早見表
| 関数 | メソッド |
|---|---|
wp_remote_post() |
POST |
wp_remote_get() |
GET |
wp_remote_request() |
任意(PUT・DELETEなど) |
関連項目
wp_remote_get()、wp_remote_request()、wp_remote_retrieve_body()
公式リファレンス:wp_remote_post() | Function | WordPress Developer Resources

コメント