p Бесконечная подгрузка новостей WordPress при прокрутке страницы — Данил Самигуллин
+7 982 100 5 999

Бесконечная подгрузка новостей WordPress при прокрутке страницы

  • Главная
  • Блог
  • Бесконечная подгрузка новостей WordPress при прокрутке страницы

1. Вместо пагинации поставить этот код:

<?php if (  $wp_query->max_num_pages > 1 ) : ?>
    <script>
    var ajaxurl = '<?php echo site_url() ?>/wp-admin/admin-ajax.php';
    var true_posts = '<?php echo serialize($wp_query->query_vars); ?>';
    var current_page = <?php echo (get_query_var('paged')) ? get_query_var('paged') : 1; ?>;
    var max_pages = '<?php echo $wp_query->max_num_pages; ?>';
    </script>
<div id="load_more_gs">
<div class="cssload-container"><div class="cssload-whirlpool"></div></div>
</div>
<?php endif; ?>

2. Jquery код

jQuery(function($){
    $(window).scroll(function(){
        var bottomOffset = 2000; 
        var data = {
            'action': 'loadmore',
            'query': true_posts,
            'page' : current_page
        };
        if( $(document).scrollTop() > ($(document).height() - bottomOffset) && !$('body').hasClass('loading')){
            $.ajax({
                url:ajaxurl,
                data:data,
                type:'POST',
                beforeSend: function( xhr){
                    $('body').addClass('loading');
                },
                success:function(data){
                    if( data ) { 
                        $('#load_more_gs').before(data);
                        $('body').removeClass('loading');
                        current_page++;
                    }
                    else {
                    $('#load_more_gs').remove();
                }
                }
            });
        }
    });
});

3. function.php

function true_load_posts(){
    $args = unserialize(stripslashes($_POST['query']));
    $args['paged'] = $_POST['page'] + 1; // СЛЕДУЮЩАЯ СТРАНИЦА
    $args['post_status'] = 'publish';
    $q = new WP_Query($args);
    if( $q->have_posts() ):
        while($q->have_posts()): $q->the_post(); 
?>
<?php the_post_thumbnail(); ?>
<h1 class="post_title"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>
<?php the_excerpt()?>
<?php
endwhile; endif;
    wp_reset_postdata();
    die();
}
add_action('wp_ajax_loadmore', 'true_load_posts');
add_action('wp_ajax_nopriv_loadmore', 'true_load_posts');