if (window.jQuery) {
jQuery(function($){
$('#loadmore').click(function(){
let btn_load = $(this);
let load_list = $('#load_list');
let data = {
'action': action,
'query': true_posts,
'page' : current_page
};
btn_load.text('Загружаю...');
$.ajax({
url:ajaxurl, // обработчик
data:data, // данные
type:'POST', // тип запроса
success:function(data){
if(data) {
btn_load.text('Загрузить ещё');
load_list.append(data);
current_page++;
if (current_page == max_pages) btn_load.remove();
} else {
btn_load.remove();
}
}
});
});
});
}
add_action('wp_ajax_loadmore', 'load_more');
add_action('wp_ajax_nopriv_loadmore', 'load_more');
function load_more(){
$args = unserialize( stripslashes( $_POST['query'] ) );
$args['paged'] = $_POST['page'] + 1; // следующая страница
$args['post_status'] = 'publish';
query_posts( $args );
if( have_posts() ) {
while( have_posts() ): the_post();
switch ($args['post_type']) {
case 'news':
get_template_part( 'tpl/path/news/news-list-item', get_post_format() );
break;
}
endwhile;
}
die();
}
<?php
/**
* Template Name: Страница новостей
*/
get_header(); ?>
<?php query_posts([
'post_type' => 'news',
'post_status' => 'publish',
'posts_per_page' => 12,
'orderby' => 'date',
'order' => 'DESC',
]); ?>
<div id="load_list">
<?php if( have_posts() ){
while( have_posts() ){ the_post();
get_template_part( 'tpl/path/news/news-list-item', get_post_format() );
}
} ?>
</div>
<?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; ?>';
var action = 'loadmore';
</script>
<div id="loadmore">Показать еще</div>
<?php endif; ?>
<?php wp_reset_query(); ?>
<?php get_footer(); ?>