洗練されたソリューション: Wordpress Ajax。functions.php ファイルで ajax 呼び出し可能な関数をセットアップし、データが取り込まれた html を返します。
a. functions.php ファイルに ajax 呼び出し可能なアクションを追加します。
add_action("wp_ajax_[function_name]", "function_name");
//If the action wants users to be logged in, you can specify a different function to be called in case a user is not:
//add_action("wp_ajax_nopriv_[function_name]", "[function_name_for_non_logged_users]");
b. 呼び出す関数を指定します (必要に応じて、ログインしていないユーザー用に 2 つ目の関数を指定します)。
function function_name() {
//It is good practice to use nonce verification
if (!wp_verify_nonce( $_REQUEST['nonce'], "function_name_nonce")) {
exit("[Your scary message against bad people]");
}
// Make your query here.
$post_id = $_REQUEST["post_id"];
$post = get_post($id, ARRAY_A);
// Return your data. Here I go with a simple JSON.
$result = json_encode($result);
echo $result;
}
c. テンプレートのどこかでフロントエンド コードをクックします (もちろん、grid.js 呼び出しで使用できるようにします)。$post に投稿データを入力する必要があります。私はグローバルラッパーを使用する傾向があります:
<script type="text/javascript">
<?php
$nonce = wp_create_nonce('function_name_nonce');
$endpoint = admin_url('admin-ajax.php');
?>
var Globals = {
nonce: "<?php echo $nonce; ?>",
postId: "<?php echo $post->ID; ?>",
endpoint: "<?php echo $endpoint; ?>"
}
</script>
d. これからは、ajax 呼び出しを行うのはあなた次第ですが (あなたのコードへの参照はありません)、非常に簡単です。
$.ajax({
type: "post",
dataType: "json",
url: Globals.endpoint,
data: {
action: "function_name",
post_id: Globals.postId,
nonce: Globals.nonce
},
success: function(response) {
//Aaaaand here's your post data
console.log(response);
}
});
これについては、 http://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)を参照してください。
これは良いチュートリアルです (Google の最初のページにあります): http://wp.smashingmagazine.com/2011/10/18/how-to-use-ajax-in-wordpress/