artazi
@artazi

Из-за чего не работает the_posts_pagination на index.php?

Посты и пагинацию вывожу так:
<ul class="blog__posts">
  <?php
    global $post;
    $myposts = get_posts( array( 'posts_per_page' => 4) );
    foreach( $myposts as $post ){ setup_postdata($post);
    ?>
      <article class="post">
        ....
      </article>
    <?php
    };
    the_posts_pagination();
    wp_reset_postdata();
  ?>
</ul>
  • Вопрос задан
  • 22 просмотра
Решения вопроса 1
artzolin
@artzolin
php, WordPress разработка сайтов zolin.digital
Не нужно запрашивать посты get_posts(), основной цикл уже инициализирован

Откройте любой index.php twenty темы и увидите

if ( have_posts() ) :
	
	while ( have_posts() ) :
		the_post();

		get_template_part( 'template-parts/content', get_post_format() );

	endwhile;

	the_posts_pagination();

else :
	get_template_part( 'template-parts/content', 'none' );
endif;


Если же вам нужно сделать свой запрос, воспользуйтесь этим гайдом
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AntonLitvinenko
@AntonLitvinenko
HTML coder
Насколько я помню the_posts_pagination() не работает с кастомными циклами. Если вы используете get_posts только для того, чтобы отображать 4 записи на этой конкретной странице, то я вам подскажу чуть другое решение и запрос можно оставить базовый.
// Posts per page for different post types
function x_theme_posts_per_page( $query ) {
	if (!is_admin() && $query->is_main_query()) {
		if ( is_home() ) {
			$query->set('posts_per_page', 8);
		}
		if ( is_category() ) {
			$query->set( 'posts_per_page', 8 );
		}
		if ( is_tag() ) {
			$query->set('posts_per_page', 8);
		}
		if ( is_search() ) {
			$query->set('posts_per_page', -1);
		}
		if ( is_archive() ) {
			$query->set('posts_per_page', 25);
		}
		// Выводим 2 записи для категории со слагом 'news'
		if ( $query->is_category('news') ) {
			$query->set('posts_per_page', 2);
		}
		if ( is_post_type_archive( 'events' ) ) {
			// Выводим 20 записей если это архив типа записи 'events'
			$query->set( 'posts_per_page', 20 );
			//return;
		}
	}
}
add_action('pre_get_posts','x_theme_posts_per_page');

ненужное убрать или закомментировать
Ответ написан
Ваш ответ на вопрос

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

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