我正在尝试在单击导航项时在wordpress中加载页面内容。目的是使用请求的数据刷新#content
的内容。
这是我的导航
$sidebar_posts = query_posts( 'post_type=page&order=ASC' );
echo '<ul id="sidebar-ajax">';
foreach($sidebar_posts as $post){
echo '<li id="' .get_the_ID(). '">';
echo '<a class="ajax-click" href="#">'.get_the_title().'</a>';
echo '</li>';
}
echo '</ul>';
这是我的功能
add_action ( 'wp_ajax_nopriv_load-content', 'my_load_ajax_content' );
function my_load_ajax_content () {
$post_id = $_POST[ 'post_id' ];
$post = get_post( $post_id, OBJECT);
$response = apply_filters( 'the_content', $post->post_title );
echo $response;
die(1);
}
wp_enqueue_script( 'my-ajax-request', get_bloginfo('template_directory') . '/js/ajax.js', array( 'jquery' ) );
wp_localize_script( 'my-ajax-request', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
这是我的JS
jQuery(document).ready(function($) {
$(".ajax-click").click(function() {
$("#loading-animation").show();
var post_id = $(this).parent("li").attr("id");
var ajaxURL = MyAjax.ajaxurl;
$.ajax({
type: 'POST',
url: ajaxURL,
data: {"action": "load-content", post_id: post_id },
success: function(response) {
$("#content").html(response);
$("#loading-animation").hide();
alert(post_id);
return false;
}
});
});
});
选择导航项时,警报会显示正确的post_id
,但$response
会返回0。
任何想法可能是什么问题?
答案 0 :(得分:3)
您是否在测试时登录了wordpress? 如果是,请尝试添加
add_action ( 'wp_ajax_load-content', 'my_load_ajax_content' );
在你的
之后add_action ( 'wp_ajax_nopriv_load-content', 'my_load_ajax_content' );
Wordpres必须为访客和登录用户挂钩。