通常だとクロスドメインは安全上の問題でブロックされるため、function.phpの中に以下のコードを入れる必要がある。
header("Access-Control-Allow-Origin: *");
実際に入れるとすると、
add_action('wp_ajax_detail', 'detail'); // ログイン状態のユーザーからのアクセスで動作する add_action('wp_ajax_nopriv_detail', 'detail'); // 非ログインのユーザーからのアクセスで動作する function detail() { $id = $_POST['id']; $detail[0] = get_the_title($id); $detail[1] = get_post_meta($id,'name',true); header("Content-Type: application/json; charset=utf-8"); header("Access-Control-Allow-Origin: *"); echo json_encode($detail, JSON_UNESCAPED_UNICODE); die(); };
そして、index.htmlに、
<script src="./js/jquery.xdomainajax.js"> </script> <script> var wp_url_admin_ajax = 'http://192.168.33.10/wp-admin/admin-ajax.php'; </script> <script> jQuery(function ($) { $.ajax({ type: 'POST', dataType: 'json', crossDomain: true, url: wp_url_admin_ajax, data: { 'action': 'detail','id':marker_options['id'] }, success: function (response) { var infowindow=new google.maps.InfoWindow({ /* 情報ウィンドウのオプション設定 */ content: '<div class="infowindow">' +'<h4>'+response[0] +'</h4>' + '<br />' +'<p>住所:'+ response[1]+'</p>'+ '</div>' }); infowindow.open(map_canvas,marker); } }); }); </script>
以上のコード(関数の中の数値は各自で調整の必要がある)を入れるとアプリ上に地図とマーカーを反映させることができる。