Ajax通信でwordpressからionicにデータを取り込む

functions.phpに以下を記述する。wpに投稿されたタイトルとカスタムフィールドのメタデータを配列の要素にいれて出力するような関数を記述。


add_action('wp_ajax_tell_me', 'tell_me'); // ログイン状態のユーザーからのアクセスで動作する add_action('wp_ajax_nopriv_tell_me', 'tell_me'); // 非ログインのユーザーからのアクセスで動作する function tell_me() { $id=758; $res[0] = get_the_title($id); $res[1] = get_post_meta($id,"pronunciation",true); $res[2] = get_post_meta($id,"maker",true); $res[3] = get_post_meta($id,"address",true); $res[4] = get_post_meta($id,"url",true); echo json_encode($res, JSON_UNESCAPED_UNICODE); header("Access-Control-Allow-Origin: *"); die(); }

ionicのindex.phpには以下。上述の関数(tell_me)を実行するようリクエストを送っており、その結果としてresponsには$resが入ってconsoleに出力される。


<script> var wp_url_admin_ajax = 'http://fujimoto.local/wp-admin/admin-ajax.php';</script> <script> jQuery(function($) { $.ajax({ type: "POST", dataType: 'json', crossDomain: true, url: wp_url_admin_ajax, data: { action: "tell_me" }, success: function(response) { console.log(response); var date = JSON.parse(response); if (json.err) { result = "error:404"; } else { console.log(json); } } }); }); </script>

リクエストのdataでidを指定することで、指定したデータを取り出したり、配列化してループさせることでDBのデータをまとめて持ってくることもできる。