@Alex-Broudy

Почему не работает пагинация при выводе произвольных записей CPT на архивной странице?

Подскажите, что делаю не так? Не корректно работает пагинация kama_pagenavi на архивных страницах.

Перепробовал уже разные способы и не работает, ответа на wp-kama не нашел и ответа на свой вопрос также там не получил.

Произвольный тип записи projects у меня архивный и иерархический, т.е. ссылка проекта выглядит так:
/projects/doma-iz-brusa/proekt-1/
на каждый раздел я создал свой шаблон

В цикле как раз мне нужно вывести категории проектов:
/projects/doma-iz-brusa/
/projects/doma-iz-brevna/
/projects/bani-iz-brusa/
/projects/bani-iz-brevna/
/projects/besedki/
и т.д.,

но стандартный цикл выводит все возможные страницы кроме нужных мне:
/projects/doma-iz-brusa/
/projects/doma-iz-brusa/proekt-1/
/projects/doma-iz-brusa/proekt-1/s-garazhom/ и т.д.

и при этом пагинация выводилась с ссылками на 6 страниц, но при переходе на каждую из них ничего не менялось, контент страницы оставался прежним.

добавление
$args['paged'] = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
ничего не дало и я решил добавить таксономию doma и создал термин iz-brusa, каждый проект привязал к iz-brusa и цикл сделал следующий:

<?php
$args = array(
	'post_type' => 'projects',
	'tax_query' => array(
	array(
		'taxonomy' => 'doma',
		'field'    => 'slug',
		'terms'    => 'iz-brusa',
	),
	),
);
$args['paged'] = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$query = new WP_Query( $args );
?>
	<?php if ( $query->have_posts() ) : ?>
		<?php while ( $query->have_posts() ) : $query->the_post(); ?>
			<div>
				<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
			</div>
	<?php endwhile; ?>

<?php kama_pagenavi(); ?>

<?php wp_reset_postdata(); ?>

<?php else : ?>
	<p><?php esc_html_e( 'Нет постов по вашим критериям.' ); ?></p>
<?php endif; ?>


На архивной странице с шаблоном arhive-projects.php вывожу список проектов.
Пагинация выводится и работает, но показываются в ней ссылки на 6 страниц, 1 и 2 страницы показывают полный список проектов - все отлично, а с 3 по 6 страницу выводит "Нет постов по вашим критериям.", который прописан в цикле на случай, если нет постов к выводу.

Как исправить и что поменять в коде, чтобы убрать остальные 4 страницы, следующие за 1 и 2 страницей?

P.S.: в настройках чтения в админке указано для вывода 10 записей, на первой странице выводятся 10, на второй остальные 8 категорий проектов, а с 3 по 6 как описал выше..

Буду очень благодарен за совет или помощь, однозначно решение простое, но зашел в тупик, может глаз замылился ))
  • Вопрос задан
  • 42 просмотра
Решения вопроса 1
@Alex-Broudy Автор вопроса
Как и говорил, глаз замылился ))
решение нашел, теперь пагинация работает с обоими вариантами циклов, с этим:

$args = array(
  'post_type' => 'projects',
  'tax_query' => array(
  array(
    'taxonomy' => 'doma',
    'field'    => 'slug',
    'terms'    => 'iz-brusa',
  ),
  ),
);
$args['paged'] = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$query = new WP_Query( $args );
// далее стандартный цикл


и с этим:

$this_page = get_queried_object_id(); 
	$args = array(
	'post_type' => 'banks',
	'post_parent' => $this_page,
	'numberposts' => -1,
);
$args['paged'] = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$query = new WP_Query( $args );
// далее стандартный цикл


решилось после того как добавил
$GLOBALS['wp_query']->max_num_pages = $query->max_num_pages;
перед циклом сразу после строки $query = new WP_Query( $args );

Ответ нашел здесь.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы