@ssawyer

Как сделать кнопку показать еще, учитывая рубрику?

Есть кнопка на странице "Показать еще"
Кнопка

<main id="primary" class="news">
		<div class="container">
			<div class="news__wrap">
				<div class="news__items" id="filtering-results">
				<?php
					if ( have_posts() ) :
						$i = 1;
						while ( have_posts() ) :
						  the_post();
					
						  if ($i == 1) {
								get_template_part( 'template-parts/content', 'max' );
						  } 
						  if ($i > 1) {
								get_template_part( 'template-parts/content' );
						  }
					  
						  $i++;
					  
						endwhile;

					  endif;
				?>
				</div><!-- #items -->

				<?php
				global $wp_query;
 
				// текущая страница
				$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
				// максимум страниц
				$max_pages = $wp_query->max_num_pages;
				 
				// если текущая страница меньше, чем максимум страниц, то выводим кнопку
				if( $paged < $max_pages ) {
					echo '<div id="loadmore" style="text-align:center;">
						<a href="#" data-max_pages="' . $max_pages . '" data-paged="' . $paged . '" class="news-more button">Показать еще <i class="icon icon-arrow_mini-down"></i></a>
					</div>';
				}
				?>

			</div><!-- #wrapper -->
		</div><!-- #container -->
	</main><!-- #main --


Обработчик

<?php
add_action( 'wp_ajax_loadmore', 'true_loadmore' );
add_action( 'wp_ajax_nopriv_loadmore', 'true_loadmore' );
 
function true_loadmore() {
 
	$paged = ! empty( $_POST[ 'paged' ] ) ? $_POST[ 'paged' ] : 1;
	$paged++;
 
	$args = array(
		'paged' => $paged,
		'post_status' => 'publish'
	);
	query_posts( $args );
  ?>
  <div class="news__items">
   <?php
	while( have_posts() ) : the_post();
 
		get_template_part( 'template-parts/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
 
	endwhile;
  ?>
  </div>
  <?php
	die;
 
}


Ajax

jQuery(function($){
 
	// определяем в переменные кнопку, текущую страницу и максимальное кол-во страниц
	var button = $( '#loadmore a' ),
	    paged = button.data( 'paged' ),
	    maxPages = button.data( 'max_pages' );
 
	button.click( function( event ) {
 
		event.preventDefault(); // предотвращаем клик по ссылке
 
		$.ajax({
			type : 'POST',
			url : misha.ajax_url, // получаем из wp_localize_script()
			data : {
				paged : paged, // номер текущей страниц
				action : 'loadmore' // экшен для wp_ajax_ и wp_ajax_nopriv_
			},
			beforeSend : function( xhr ) {
				button.text( '...' );
			},
			success : function( data ){
 
				paged++; // инкремент номера страницы
				button.parent().before( data );
				button.html( 'Показать еще <i class="icon icon-arrow_mini-down"></i>' );
 
				 // если последняя страница, то удаляем кнопку
				if( paged == maxPages ) {
					button.remove();
				}
 
			}
 
		});
 
	} );
});



Работает все исправно, но находясь в какой либо рубрике при нажатии на кнопку выгружаются посты из всех рубрик. Как сделать так, чтобы по клику подгружались посты только из этой рубрики?
Очень нужна помощь, выручайте
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 1
anatoly_kulikov
@anatoly_kulikov
Помог ответ? Отметь решением!
Самое простое - через дата-атрибут воткните id рубрики и передавайте его с запросом. Если там будет null/параметр не указан, то просто выводим все, если параметр указан - добавляем условие.
Ответ написан
Ваш ответ на вопрос

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

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