Добрый день коллеги. Wordpress. Пытаюсь сделать перемещение по страницам навигации без перезагрузки.
Вот что уже есть:
В конце вывода записей создаю кнопку с id true_loadmore. На эту кнопку вешаю событие загрузки постов следующей страницы пагинации на Ajax.
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; ?>;
jQuery(function($){
$('body').on('click', '#true_loadmore', function(){
$(this).text('Загружаю...');
var data = {
'action': 'loadmore',
'query': true_posts,
'page' : current_page,
'max_pages' : max_pages,
};
$.ajax({
url:ajaxurl,
data:data,
type:'POST',
success:function(data){
if( data ) {
$('#true_loadmore').text('Загрузить ещё');
$('.more_block').before(data);
current_page++;
if (current_page == max_pages) $("#true_loadmore").remove();
} else {
$('#true_loadmore').remove();
}
}
});
});
});
Вот функция обработки запроса:
function true_load_posts(){
echo '<main class="codyshopList grid front-page codyshop-content codyshop-post-box" id="main_section">';
$args = unserialize(stripslashes($_POST['query']));
$max_pages = $_POST['max_pages'];
$paged = $_POST['page'] + 1;
$cat = $_POST['cat'];
$num = get_option( 'posts_per_page' );
$options = array(
'post_type' => 'post',
'posts_per_page' => $num,
'post_status' => 'publish',
'cat' => $cat,
'paged' => $paged,
);
query_posts( $options ); ?>
<?php while (have_posts()): the_post(); ?>
<div data-id="<?php echo get_the_ID(); ?>" class="codyshop-item codyshop-items codyshop ">
<div class="post-item">
<div class="info-box">
<span class="love">
<a rel="nofollow noindex" class="love-button" href="<?php echo admin_url( 'admin-ajax.php?action=post_love_add_love&post_id=' . get_the_ID() ) . '" data-id="' . get_the_ID() ;?>"><div class="heart"></div></a><span id="love-count-<?php echo get_the_ID();?>"><?php echo get_post_meta( get_the_ID(), 'post_love', true );?></span></span>
<span class="flaticon-interface"><?php echo get_post_meta (get_the_ID(),'views',true); ?></span>
<span class="flaticon-comment-white-oval-bubble"><?php comments_number('0', '1', '%'); ?></span>
</div>
<a href="<?php the_permalink(); ?>">
<?php if( has_post_thumbnail() ) {
the_post_thumbnail('codyshop-blog-thumbnail');
} else{ ?>
<img src="<?php echo esc_url(get_template_directory_uri().'/assets/images/default.gif'); ?>" alt="">
<?php } ?>
</a>
<div class="inner">
<h2><a data-toggle="modal" href="<?php the_permalink(); ?>" class="title"><?php the_title(); ?></a></h2>
</div>
</div>
</div>
<?php endwhile; wp_reset_postdata(); ?>
<?php $index++; $count_posts = wp_count_posts(); $published_posts = $count_posts->publish; echo '<div class="footer-navi-box"><div class="navi">Всего записей на сайте: ' . $published_posts . '</div><div class="footer-navi">'; ?>
<?php the_posts_pagination( array(
'mid_size' => 2,
'Previous' => __( 'Back', 'codyshop' ),
'Next' => __( 'Onward', 'codyshop' ),
) ); ?>
<?php echo '<div class="btn_more_blocks" id="true_loadmore">Загрузить еще</div>';?>
<?php echo '</div></div>';?>
<?php echo '<div class="page-brake"><span>Страница: '; echo (get_query_var('paged')) ? get_query_var('paged') : 1; echo ' из '; echo $max_pages; echo '</span></div>';?>
<?php wp_reset_query(); echo '</main>'; ?>
<?php
die();
}
add_action('wp_ajax_loadmore', 'true_load_posts');
add_action('wp_ajax_nopriv_loadmore', 'true_load_posts');
Все работает. Но есть одно НО!
При клике по кнопке "Загрузить еще" посты добавляются, обновляется и пагинация. То есть, навигация как бы переходит на следующую страницу. Проблема в том, что меняются ссылки пагинации.
Например:
Было site.ru/blog/page/2/
Становится: site.ru/wp-admin/admin-ajax.php/2/
Естественно, эта страница пуста.
И так далее
Есть ли предложения, как решить данную проблему? Заранее благодарю.