WordPressでRESTAPIを使った画像の投稿と記事の投稿です。
記事にはアイキャッチ画像を付けています。
プラグインは「Application Passwords」を利用して認証を通すようにしています。
画像の投稿
ローカルにファイルがある形でアップしています。
最後の画像IDは次の記事の投稿で利用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
$base_url = 'https://***/'; $file_name = "***.jpg"; $postdata = file_get_contents($file_name); $file_info = new finfo(FILEINFO_MIME_TYPE); $file_mime = $file_info->file($file_name); $request_header = [ 'Authorization: Basic ' . base64_encode( '***' . ':' . '***' ), 'Content-Disposition: attachment; filename="%s"'. $file_name, 'Content-Type: ' . $file_mime, ]; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $base_url.'/wp-json/wp/v2/media'); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata); curl_setopt($curl, CURLOPT_HTTPHEADER, $request_header); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($curl); curl_close($curl); $media_id = ''; if (!empty($result)) { $media_id = json_decode($result, true)['id']; } echo $media_id; |
記事の投稿
上記で投稿した画像IDをアイキャッチ画像に設定して記事を投稿します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<?php $base_url = 'https://***/'; $media_id = ***; $content =<<<__TEXT_STRRING__ 記事内容 記事内容 __TEXT_STRRING__; $data = [ "title" => '記事のタイトル', "content" => $content, "slug" => '記事のスラッグ', "categories" => [10], "status" => "publish", "featured_media" => $media_id, ]; $header = [ 'Authorization: Basic ' . base64_encode( '***' . ':' . '***' ), 'Content-Type: application/json', ]; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $base_url.'/wp-json/wp/v2/posts'); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); // post curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, true); $response = curl_exec($curl); $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE); $header = substr($response, 0, $header_size); $body = substr($response, $header_size); $result = json_decode($body, true); curl_close($curl); |
定常的なアップなどはこちらを少し変更して実施できます。
このブログは株式会社CoLabMixによる技術ブログです。
GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。
Ruby on RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。
開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。