@Alex_87

Как вывести пагинацию в wordpress?

Всем привет! Прошу посмотреть на код и сказать, почему не выводиться пагинация?
Ориентировался по данной статье: https://www.kobzarev.com/wordpress/pagination-does...
<section class="news-section">
    <div class="wrapper">
      <div class="news-wrapp">

      <?php
       
        $current = absint( max( 1, get_query_var( 'paged' ) ? get_query_var( 'paged' ) : get_query_var( 'page' ) ) );
        $args = [
            'post_type' => 'news',
            'posts_per_page' => $posts_per_page,
            'paged' => $current,
            // 'cat' => $data[0]->term_id
        ];
       
        $loop = new WP_Query($args);
        while ($loop->have_posts()) : $loop->the_post(); ?>


        <a href="<?php the_permalink(); ?>">
          <div class="news news1">
            <div class="news__img">
              <a href="<?php the_permalink(); ?>"> <?php echo get_the_post_thumbnail(); ?></a>
            </div>
            <p class="news__date"><?php the_date(); ?></p>
            <h3 class="news__title">
                <?php the_title(); ?>
            </h3>
          </div>
         
                 

                
            
          <?php
        endwhile;

        

        
        wp_reset_postdata();
     
     echo wp_kses_post(
       paginate_links(
         [
           'total'   => $loop->max_num_pages, // количество берем из дефолтной опции запроса
            'current' => $current, // текущая страница
       
         ]
       )
     );
     
     
     
      ?>

        </a>
      </div>
      
           
    </div>
    
  </section>
  • Вопрос задан
  • 188 просмотров
Решения вопроса 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Нужно получить номер текущей страницы пагинации и передать его в параметры запроса

$current = absint( max( 1, get_query_var( 'paged' ) ? get_query_var( 'paged' ) : get_query_var( 'page' ) ) );

$args = [
	'post_type' => 'news',
	'posts_per_page' => $posts_per_page,
	'paged' => $current,
];


Номер текущей страницы пагинации и максимальное кол-во страниц запроса нужно передать еще и в функцию paginate_links()

echo wp_kses_post(
	paginate_links(
		[
			'total'   => $loop->max_num_pages, // количество берем из дефолтной опции запроса
			'current' => $current, // текущая страница
		]
	)
);


Остальные параметры paginate_links() можете удалить, вызывать global $wp_query не нужно

Ссылку в ссылку класть нельзя, у вас поломается html

Выводить пагинацию нужно ПОСЛЕ цикла while

while ( $loop->have_posts() ) {
	# code...
}

echo wp_kses_post( paginate_links() );


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

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

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