wp_remote_post() の使い方|説明・引数・注意点

説明

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

コメント

タイトルとURLをコピーしました