@Muvka

Почему не выводится пагинация WordPress?

Есть шаблон страницы. На ней выводятся посты из кастомного типа записей. Пытаюсь вывести пагинацию
<?php the_posts_pagination( array(
	'show_all'     => true,
	'prev_next'    => false,
	'add_args'     => false,
	'add_fragment' => '',
) ); ?>

Выводит ничего. Судя по всему из-за того, что $GLOBALS['wp_query']->max_num_pages вызвращает 0. Постов 4 при
'posts_per_page' => '2',
'posts_per_archive_page' => '2',

Нашел закономерность - Если код вставить напрямую на страницу, то пагинация начинает работать. Если через add и do_action - то не работает. Нужна какая-то глобальная переменная? Подскажите какая.
  • Вопрос задан
  • 1111 просмотров
Пригласить эксперта
Ответы на вопрос 1
MedVedar
@MedVedar
e-commerce developer
Привет!
Приведу рабочий кусок кода, где я для себя решил эту проблему.
$term      = get_queried_object();
					$term_slug = $term->slug;
					$paged     = ( get_query_var( 'page' ) ) ? get_query_var( 'page' ) : 1;
					$_posts    = new WP_Query( array(
						'post_type'      => 'product',
						'posts_per_page' => 10,
						'paged'          => $paged,
						'tax_query'      => array(
							array(
								'taxonomy' => 'product-category',
								'field'    => 'slug',
								'terms'    => $term_slug,
							),
						),
					) );
					global $wp_query;
					$tmp_query = $wp_query;
					$wp_query  = null;
					$wp_query  = $_posts;
					if ( $_posts->have_posts() ) :
						while ( $_posts->have_posts() ) :
							$_posts->the_post();
							get_template_part( 'template-parts/content-product', 'preview' );
						endwhile;
						the_posts_pagination( array(
							'type' => 'list',
							'prev_text'    => '<i class="fas fa-angle-double-left"></i>',
							'next_text'    => '<i class="fas fa-angle-double-right"></i>',
						) );
					else :
						get_template_part( 'template-parts/content', 'none' );
					endif;
					$wp_query = null;
					$wp_query = $tmp_query;
					wp_reset_postdata();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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