Задать вопрос
@makboriska

Ajax подгрузка постов, при нажатии на кнопку — кнопка исчезает а постов нет?

Есть цикл который выводит произвольные записи
$mypost_Query = new WP_Query( array(
						'post_type'        => 'courses',                  # post, page, custom_post_type 
						'post_status'      => 'publish',                       # статус записи 
						'paged' => $paged,
						'posts_per_page'   => 2,                             # кол-во постов вывода/загрузки 
					) );

					if ( $mypost_Query->have_posts() ) {
						while ( $mypost_Query->have_posts() ) { $mypost_Query->the_post();
							get_template_part('./template-page/content-curse');
						}
					}
					else { echo('<p>Извините, нет записей.</p>'); }
					wp_reset_postdata();
					?>
 				</div>
				 <?php // AJAX загрузка постов ?> 
					<?php if ( $mypost_Query->max_num_pages > 2 ) { ?>
						<script> let this_page = 2; </script>

						<div class="btn-loadmore" title="Загрузить еще"
							data-param-posts='<?php echo serialize($mypost_Query->query_vars); ?>'
							data-max-pages='<?php echo $mypost_Query->max_num_pages; ?>'
							data-tpl='doveryayut'
						>
							<span class="fas fa-redo"></span> Загрузить ещё
						</div>
					<?php } ?>

Также есть обработчик js
jQuery(function($){

  // AJAX загрузка страниц/записей WP 
  $('.btn-loadmore').on('click', function(){
      let _this = $(this);
      _this.html('<span class="fas fa-redo fa-spin"></span> Загрузка...'); // изменение кнопки 

      let data = {
          'action': 'loadmore',
          'query': _this.attr('data-param-posts'),
          'page': this_page,
          'tpl': _this.attr('data-tpl')
      }

      $.ajax({
          url: '/wp-admin/admin-ajax.php',
          data: data,
          type: 'POST',
          success:function(data){
              if (data) {
                  _this.html('<span class="fas fa-redo"></span> Загрузить ещё');
                  _this.prev().prev().append(data); // где вставить данные 
                  this_page++;                      // увелич. номер страницы +1 
                  if (this_page == _this.attr('data-max-pages')) {
                      _this.remove();               // удаляем кнопку, если последняя стр. 
                  }
              } else {                              // если закончились посты 
                  _this.remove();                   // удаляем кнопку 
              }
          }
    });
});

});

и код из функций темы
// AJAX загрузка постов 
function load_posts () {
    $args = unserialize( stripslashes( $_POST['query'] ) );
    $args['paged'] = $_POST['page'] + 1; // следующая страница 

    query_posts( $args );
    if ( have_posts() ) {
        while ( have_posts() ) { the_post();

            if ($_POST['tpl'] === 'courses') {
                get_template_part( '/template-page/content-curse');
            }
			if ($_POST['tpl'] === 'courses') {
                get_template_part( '/template-page/content-curse');
            }
        }
        die();
    }
}
add_action('wp_ajax_loadmore', 'load_posts');
add_action('wp_ajax_nopriv_loadmore', 'load_posts');


При нажатии на кнопку "Загрузить ещё" кнопка пропадает, а записей нет, при этом я пытался увеличить кол-во записей на странице до реального их кол-ва и кнопка пропадала сама, т.е скрпит определяет сколько записей, но вот не работает должным образом, может я где-то накосячил?
  • Вопрос задан
  • 514 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы