繁体   English   中英

WordPress的AJAX加载更多检查帖子的结尾

[英]Wordpress AJAX load more check end of posts

我的AJAX加载更多功能无法正确检查帖子的结尾-如果没有帖子,它会再次显示预加载器一次。 这是由于每次发送ajax请求之前都要删除pleroader的隐藏类引起的。

我应该如何检查帖子的结尾正确?

AJAX

如果响应为0-则隐藏预加载器。 因此,应该在不应该的时候显示预加载器一次。

    var page = 3;
    var emptyQuery = false;
    function load_posts() {
        page++;

        var category = $('.cat-list__item.active').data('category');
        $.ajax({
            url: flow.ajax_url,
            type: 'POST',
            beforeSend: function (jqXHR) {
                $('body').addClass('loading');

                if ($('.preloader').length) {
                    $('.preloader').removeClass('preloader--hidden');
                }
            },
            data: {
                action: 'scroll_post_load',
                page: page,
                category: category

            },
            success: function (response) {
                if ( response==0 ) {
                    emptyQuery = true;
                    if ($('.preloader').length) {
                        $('.preloader').addClass('preloader--hidden');
                    }
                } else {
                    if ($('.preloader').length) {
                        $('.preloader').addClass('preloader--hidden');
                    }

                    var html = response;
                    $(html).hide().appendTo('.posts-list').fadeIn(1000);
                }

                $('body').removeClass('loading');
            }
        });
    }

    // Scripts which runs on scrolling
    $( window ).on( 'scroll', function() {
        if( $(window).scrollTop() > $('.posts-list').height() && !$('body').hasClass('loading')) {
            if(emptyQuery == false) {
                load_posts();
            }
        }
    } );

的PHP

如果是最后一页-则返回0

function scroll_post_load(){
    $paged = $_POST['page'];
    $category = $_POST['category'];

    if( $category=='all' || !$category ) {
        $args = array(
            'post_type' => 'post',
            'post_status' => 'publish',
            'posts_per_page' => '3',
            'paged' => $paged
        );
    }
    if( $category ) {
        $args = array(
            'post_type' => 'post',
            'post_status' => 'publish',
            'posts_per_page' => '3',
            'paged' => $paged,
            'cat'   => $category
        );
    }

    $wp_query = new WP_Query( $args );
    if ( $wp_query->max_num_pages == get_query_var('paged')) {
        return '0';
    }

    if ($wp_query->have_posts()) :
        while ($wp_query->have_posts()) : $wp_query->the_post();
            show_template('loop-post');
        endwhile;
    endif;

    wp_die();
}
add_action('wp_ajax_scroll_post_load', 'scroll_post_load');
add_action('wp_ajax_nopriv_scroll_post_load', 'scroll_post_load');

如果仅在响应中返回总页数,然后在脚本中检查下一页是否最后一页,则可以解决此问题。

我通常就是这样。 我总是返回最大页面数和内容,因此可以检查是否需要最后一次执行AJAX调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM