WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Новые WordPress шаблоны

GetPosts и пагинация

Попытался сделать основной цикл (в home.php) следующим образом:

<?php
	global $post;
	$args = array( 'numberposts' => 0, 'posts_per_page' => 55 );
	$columns_num = 5; // The number of columns we want to display our posts
	$i = 0; //Counter for .row divs
	$myposts = get_posts( $args );
	foreach ( $myposts as $post ) {
		setup_postdata( $post );
		//  вывод записей 
		get_template_part( 'parts/card' );

				if ( $i % $columns_num == $columns_num - 1 ) {
					echo '</div> <div class="row">';
				}

				$i++;

	}
	wp_reset_postdata();
	?>

Вывод - корректный. НО не работает пагинация:

<div class="row">
	<div class="col-12">
		<?php if (function_exists('wp_corenavi')) wp_corenavi(); ?>
	</div>
</div>

(отображается тот же набор постов, что и на первой странице)

По причине быстродействия (выигрыш в 4-5 раз по сравнению со стандартным циклом if have posts while have posts the posts, в котором пагинация работает корректно), очень хотелось бы применить именно get_posts.

ВОПРОС: есть ли способ починить пагинацию?

0
12 дней назад
  • 0

    Пагинация выводится для главного цикла (именно того have_posts() while have_posts и т.д.). А ваш цикл повторяется каждый раз, на каждой странице.

    Не придумывайте - используйте стандартный цикл (запрос этих постов в любом случае происходит, не важно - выводите вы их или нет). Если нужно вмешаться в стандартный запрос страницы используйте фильтр pre_get_posts.

    Комментировать
  • 1
    Kama7021
    pervect 12 дней назад

    Спасибо!

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация