Ajaxを用いて、WordPressの投稿データをブラウザで取得するには、WordPressのfunctions.phpとブラウザ側(index.html)に以下の処理を加えます。
<functions.php>
function my_ajax_get_posts(){
$returnObj = array(); //配列$returnObjを宣言
//取得するデータの指定 $args = array( ‘post_type’ => ‘post’,//投稿タイプ ‘numberposts’ => 100,//取得する投稿の数を指定 );
$posts = get_posts( $args ); //配列$returnObjに投稿データを格納 foreach( $posts as $key => $post ) { $returnObj[$key] = array( 'post_title' => $post->post_title, 'permalink' => get_permalink( $post->ID ), 'custom_field_data' => get_post_meta( $post->ID, '{カスタムフィールドのキー}' , true),
//カスタムフィールドの値をキーを指定して取得する ); }
echo json_encode( $returnObj ); die();
} add_action( ‘wp_ajax_my_ajax_get_posts’, ‘my_ajax_get_posts’ ); add_action( ‘wp_ajax_nopriv_my_ajax_get_posts’, ‘my_ajax_get_posts’ );
index.html
jQuery(function($) { $.ajax({ type: “POST”, url: “http://{自分の名前}.local/wp-admin/admin-ajax.php”, //処理を命令する先のパスの設定 data: { action: “my_ajax_get_posts” //使用する関数の設定 }, success: function(response) { jsonData = JSON.parse(response); $.each(jsonData, function(i, val) { //受け取った配列を一つずつコンソール上に表示する console.log(val[“post_title”]); //投稿タイトル console.log(val[“permalink”]); //投稿リンク console.log(val[“{カスタムフィールドのキー}”]); //指定したカスタムフィールドの値 }); } }); return false; });