2026年8月3日

2026年8月3日

WordPressのHTTP APIで外部リクエストをする方法

はじめに

Web開発において、WordPressはCMSだけでなく、さまざまな外部サービスと連携することが可能です。その中でもHTTP APIは、WordPress内で外部リソースへのアクセスやデータの送受信を行うための重要な機能です。この記事では、WordPressのHTTP APIを使用して外部APIにリクエストを送る方法について詳しく説明します。

症状・背景

  • 外部APIとの連携が必要な場合
  • サードパーティ製プラグインが提供するREST APIへのアクセスが必要な場合
  • WordPressのフロントエンドから外部データを取得したい場合
  • ベースとなるWordPressサイトに機能追加を行うために、独自のHTTPリクエストが必要な場合

手順・設定方法

ステップ1: HTTP APIを使用してGETリクエストを送る

# WordPressのAPIを使用してGoogle Maps APIにアクセスします。
$response = wp_remote_get( 'https://maps.googleapis.com/maps/api/geocode/json?address=東京&key=YOUR_API_KEY' );

if ( is_wp_error( $response ) )
    return false;

// JSONデータをデシリアライズ
$data = json_decode(wp_remote_retrieve_body($response), true);

// データの処理を行う
$latitude  = $data['results'][0]['geometry']['location']['lat'];
$longitude = $data['results'][0]['geometry']['location']['lng'];

ステップ2: POSTリクエストを送る

# WordPressのAPIを使用してPOSTリクエストを送ります。
$args = array(
    'timeout' => 45,
    'httpversion' => '1.1',
    'blocking' => true,
    'headers' => array(),
    'body' => array('key' => $api_key, 'value' => $some_value),
);

$response = wp_remote_post( 'https://example.com/api', $args );

if ( is_wp_error( $response ) )
    return false;

// JSONデータをデシリアライズ
$data = json_decode(wp_remote_retrieve_body($response), true);

ステップ3: タイムアウトや認証情報を設定する

# タイムアウトを指定し、APIキーを使用してリクエストヘッダーに追加します。
$args = array(
    'timeout' => 15,
    'redirection' => 5,
    'httpversion' => '1.1',
    'blocking' => true,
    'headers' => array( 'Authorization' => 'Bearer ' . $api_key ),
    'sslverify' => false, // SSL検証を無効にします
);

$response = wp_remote_get( 'https://example.com/api', $args );

if ( is_wp_error( $response ) )
    return false;

// JSONデータをデシリアライズ
$data = json_decode(wp_remote_retrieve_body($response), true);

ステップ4: リクエストの結果を処理する

# レスポンスコードとボディを確認します。
$response_code = wp_remote_retrieve_response_code( $response );
$body          = wp_remote_retrieve_body( $response );

// HTTPステータスコードが200以外の場合、エラーを返します。
if ( 200 !== intval($response_code) ) {
    return new WP_Error('http_request_failed', $body);
}

注意事項

  • <実践的な注意点1>: タイムアウト時間を適切に設定し、リクエストがタイムアウトしないよう注意してください。
  • <実践的な注意点2>: SSL証明書の検証を無効にする際は、セキュアな環境で行うようにしましょう。
  • <セキュリティ上の注意>: APIキーなどの機密情報を適切に管理し、不正アクセス防止のために常に最新のセキュリティプラクティスを確認してください。
  • <パフォーマンス/運用上の注意>: 大量の外部API呼び出しを行う場合、サーバーの負荷が高くなる可能性があるため、キャッシュや非同期処理などを検討することをお勧めします。

まとめ

1. HTTP GETリクエスト: wp_remote_get関数を使用してGETリクエストを送信できます。

2. HTTP POSTリクエスト: wp_remote_post関数を使用してPOSTリクエストを送信できます。

3. タイムアウト設定: リクエストのタイムアウト時間を調整し、サーバー負荷を管理します。

4. 認証情報: APIキーなどの情報を適切にヘッダーに追加し、セキュアな通信を行います。

5. 結果処理: エラーハンドリングを行い、リクエストの結果に基づいて適切な対応をします。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ