查询不通过AJAX工作的自定义帖子类型

时间:2017-11-16 08:53:06

标签: ajax wordpress custom-post-type

我创建了一个名为' award'的自定义帖子类型。我在archive-award.php,我正在显示一个奖项列表'帖子。到现在为止还挺好。

现在我想通过AJAX点击下一个帖子,点击“加载更多”#39;按钮。这是我传递给AJAX脚本的操作:

function load_next_award_posts() { 

    $args = array(
        'paged' => 2, 
        'post_type' => 'award',
        'post_status' => 'publish'
    );

    $next_posts = new WP_Query( $args ); 

    if( $next_posts->have_posts() ) :   
        while( $next_posts->have_posts() ) : $next_posts->the_post(); 
            echo '<p>Hello</p>';
        endwhile;
    endif;

    wp_reset_postdata();
    die(); 

} 

不幸的是,查询没有返回任何结果。如果我将post_type更改为默认postpage,则一切正常。那是怎么回事?为什么查询不能使用我的自定义帖子类型?

1 个答案:

答案 0 :(得分:0)

<a id="more_posts" href="#">Load More</a>

你的file.js     

    var ajaxUrl = "<?php echo admin_url('admin-ajax.php')?>";
    var page = 1; // What page we are on.
    var ppp = 10; // Post per page

    $("#more_posts").on("click",function(){
        $("#more_posts").attr("disabled",true);
        $.post(ajaxUrl, {
            action:"more_post_ajax",
            offset: (page * ppp) + 1,
            ppp: ppp
        }).success(function(posts){
            page++;
            $(".name_of_posts_class").append(posts);
            $("#more_posts").attr("disabled",false);
        });

   });

</script>

的functions.php

function more_post_ajax(){
    $offset = $_POST["offset"];
    $ppp = $_POST["ppp"];
    header("Content-Type: text/html");

    $args = array(
        'post_type' => 'award',
        'posts_per_page' => $ppp,
        'offset' => $offset,
    );

    $loop = new WP_Query($args);
    while ($loop->have_posts()) { $loop->the_post(); 
       the_content();
    }

    exit; 
}

add_action('wp_ajax_nopriv_more_post_ajax', 'more_post_ajax'); 
add_action('wp_ajax_more_post_ajax', 'more_post_ajax');