wordpressにて外部APIから情報を取得して投稿したいのですが
Advanced Custom Fields(以下ACF)を利用したカスタムフィールドにデータが入りません。
環境はローカルでMAMPを使用しています。
Wordpress 5.7
利用プラグイン
・Application Passwords
・CustomPost Type UI
・Advanced Custom Fields
手順としては
①外部APIよりJSONデータを取得
②取得したデータのうち、ACFを利用していないデータのみ投稿
③新規投稿したpost_idを取得 ←(ここまでは実行される)
④post_idのACFを更新
現在のコードは以下のとおり
php
1 2<?php 3 4 $url = "(API提供元URL)"; 5 $json = mb_convert_encoding(file_get_contents($url), 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN'); 6 $json_arr = json_decode($json,true); 7 8 if ($json_arr === NULL) { 9 continue; 10 }else{ 11 $title = $json_arr['title']; 12 $slug = $json_arr['name']['en']; 13 } 14 15// 投稿 16$base_url = 'http://localhost:8888/(フォルダ名)'; 17 18$data = [ 19 "title" => $title, 20 "slug" => $slug, 21 "status" => "publish" 22]; 23 24$header = [ 25 'Authorization: Basic ' . base64_encode( 'ユーザー名' . ':' . 'Application Passwords' ), 26 'Content-Type: application/json', 27]; 28 29$curl = curl_init(); 30 31curl_setopt($curl, CURLOPT_URL, $base_url.'/wp-json/wp/v2/card'); 32curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); 33curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); 34curl_setopt($curl, CURLOPT_HTTPHEADER, $header); 35curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 36curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 37curl_setopt($curl, CURLOPT_HEADER, true); 38 39$response = curl_exec($curl); 40 41$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE); 42$header = substr($response, 0, $header_size); 43$body = substr($response, $header_size); 44$result = json_decode($body, true); 45 46$post_id =$result['id'];//投稿ID取得 47 48curl_close($curl); 49 50//ここまでは実行される(投稿される) 51 52//ACF更新 53if($post_id){ 54 update_post_meta($post_id, 'カスタムフィールド名', 'データ'); 55 } 56} 57
以上、ご教授お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/18 14:00