Использую следующий метод бесконечной загрузкой постов при прокрутке страницы по этому
мануалу. Код быстрый и хороший. Но есть одна проблема - на страницах таксономий, где меньше или равно одной страницы, а также на одиночных записях при скроллинге выскакивают постоянные ошибки в консоли.
Код function.php
<?php
function true_load_posts(){
$args = unserialize( stripslashes( $_POST['query'] ) );
$args['paged'] = $_POST['page'] + 1; // следующая страница
$args['post_status'] = 'publish';
// обычно лучше использовать WP_Query, но не здесь
query_posts( $args );
// если посты есть
if( have_posts() ) :
// запускаем цикл
while( have_posts() ): the_post();
get_template_part( 'template-parts/post/content', get_post_format() );
endwhile;
endif;
die();
}
add_action('wp_ajax_loadmore', 'true_load_posts');
add_action('wp_ajax_nopriv_loadmore', 'true_load_posts');
Код js
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 ) {
$('#true_loadmore').before(data);
$('body').removeClass('loading');
current_page++;
}
}
});
}
});
});
Код для index.php, archive.php
<?php if ( $wp_query->max_num_pages > 1 ) : ?>
<script id="true_loadmore">
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; ?>;
</script>
<?php endif; ?>
Помогите, пожалуйста, решить данную проблему.