首先你需要register a action callback 为您提供ajax请求
其次,您需要将所有ajax请求发送到wp-admin/admin-ajax.php
(两者GET
和POST
).
最后,您需要稍微修改javascript以通过action
将触发回调的参数。和var post_link = $(this);
不提供应该使用的post id from rel属性var post_link = $(this).attr("rel");
您可以通过以下方式获取ajax urladmin_url( \'admin-ajax.php\' );
在您的主题中。和使用javascript localization 进入js。
在你的索引中,其他一切看起来都很好。php
Example
JavaScript$(document).ready(function(){
$.ajaxSetup({cache:false});
$(".post-link").click(function(){
var post_id = $(this).attr("rel");
$("#post-container").html("loading...");
//$("#post-container").load(post_link+"?action=load_more_post&pid="+post_id);
// update: .load() should send request to ajax url not the post url
$("#post-container").load(ajax_url+"?action=load_more_post&pid="+post_id);
return false;
});
});
PHP(在主题的function.PHP中)add_action( \'wp_ajax_load_more_post\', \'load_more_post_callback\' );
add_action( \'wp_ajax_nopriv_load_more_post\', \'load_more_post_callback\' );
function load_more_post_callback() {
if( isset($_GET["pid"]) ){
$post = get_post( $_GET["pid"] );
if( $post instanceof WP_Post ) {
echo \'<h1 class="post_title">\'.$post->post_title.\'</h1>\';
} else {
// nothing found with the post id
}
} else {
// no post id
}
wp_die();
}