function tell_me() { $ID_BOX = array( 0 => "10", 1 => "12", 2 => "14", 3 => "16" ); //記事のID $json1_box = []; for($i = 0; $i < count($ID_BOX) ; $i++){ $id = $ID_BOX[$i]; $a0= get_the_title($id); $a1= get_post_meta($id,"a",true); $a2= get_post_meta($id,"b",true); $a3= get_post_meta($id,"c",true); $a4= get_post_meta($id,"lat",true); $a5= get_post_meta($id,"lng",true); $json1 = ['name'=> $a0,'min'=>$a1,'free'=>$a2,'call'=>$a3,'lat'=>$a4,'lng'=>$a5]; //記事の情報をまとめて1つの要素にする、その際にキーを付けてあげる('name'など) $json1_box[$i] = $json1; //上でまとめた要素にキー[$i]を振り、jsonエンコードに対応した形式にする } echo json_encode($json1_box, JSON_UNESCAPED_UNICODE); header("Access-Control-Allow-Origin: *"); die(); }
このようにすれば、カスタムフィールドの複数の値をjson形式にして、データの数だけブラウザ側に渡すことができる。
おまけ
タイトルとまったく違う内容ですが、、、 上記で持ってきた複数のデータを地図上に表示するために、ブラウザ側で
var info = data[i].name + "<br>30分の料金は"+ data[i].min +"円です" + "<br>フリータイムの料金は"+ data[i].free +"円です" + "<br>電話番号は"+ data[i].call +"です" dispInfo(markers[i],info); //これはfor文の中の処理です。
function dispInfo(marker,info) { google.maps.event.addListener(marker, 'click', function(event) { new google.maps.InfoWindow ({content:info}).open(marker.getMap(), marker); }); }
のようにして、情報をinfoという変数に格納するとうまくいった。