以下は、WordPress REST API + PHPを使って投稿にアイキャッチ画像(サムネイル)を設定する関数のスニペットです。この技術記事では、APIを通じて画像をアップロードし、投稿にアイキャッチ画像を設定する方法を説明します。
目次
WordPress REST APIでアイキャッチ画像を設定する手順
- APIトークンの取得
WordPress REST APIにアクセスするためには、認証が必要です。以下のように、アプリケーションパスワードを使用して認証トークンを生成します。
// ベーシック認証のためのユーザー名とアプリケーションパスワード
$username = 'your-username';
$application_password = 'your-application-password';
// ベーシック認証用ヘッダーの作成
$headers = [
'Authorization' => 'Basic ' . base64_encode($username . ':' . $application_password),
'Content-Type' => 'application/json',
];
- 画像をアップロードする
次に、アップロードしたい画像を/wp-json/wp/v2/media
エンドポイントにPOSTリクエストで送信します。以下は、PHPのcurl
を使用してファイルをアップロードする例です。
$upload_url = 'https://example.com/wp-json/wp/v2/media'; // WordPressサイトのURL
$image_path = '/path/to/your/image.jpg'; // ローカルの画像パス
$image_data = file_get_contents($image_path);
// ファイルアップロード用のcURLリクエスト
$ch = curl_init($upload_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array_merge($headers, [
'Content-Disposition: attachment; filename="' . basename($image_path) . '"'
]));
curl_setopt($ch, CURLOPT_POSTFIELDS, $image_data);
$response = curl_exec($ch);
curl_close($ch);
// レスポンスをデコードし、画像IDを取得
$media = json_decode($response, true);
$media_id = $media['id'];
- 投稿にアイキャッチ画像を設定する
画像が正常にアップロードされたら、次にその画像を指定した投稿のアイキャッチ画像として設定します。/wp-json/wp/v2/posts/{post_id}
エンドポイントにPOST
リクエストを送信し、featured_media
にアップロードされた画像のIDを指定します。
$post_id = 123; // アイキャッチ画像を設定する投稿のID
$update_post_url = 'https://example.com/wp-json/wp/v2/posts/' . $post_id;
$post_data = json_encode([
'featured_media' => $media_id // アップロードされた画像のIDを指定
]);
// 投稿更新用のcURLリクエスト
$ch = curl_init($update_post_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$response = curl_exec($ch);
curl_close($ch);
// レスポンス確認
$updated_post = json_decode($response, true);
実際の使用例
このスニペットは、PHPを使用してWordPressのREST APIを呼び出し、アイキャッチ画像を投稿に設定するものです。画像アップロード後に取得したメディアIDを、投稿のfeatured_media
フィールドに設定して、投稿のアイキャッチ画像として反映されます。
上記のスニペットは、以下のような状況で役立ちます:
- 画像をプログラム的に投稿に設定する必要がある場合
- アイキャッチ画像を定期的に変更するバッチ処理やスクリプトを作成する場合
このスクリプトは非常に柔軟で、特定のWordPressサイトで認証と画像アップロード、アイキャッチ画像設定を自動化するために活用できます。