wordpress通过ajax加载页面内容

时间:2014-09-09 09:43:42

标签: ajax wordpress

我正在尝试在单击导航项时在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。

任何想法可能是什么问题?

1 个答案:

答案 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必须为访客和登录用户挂钩。