Ужас, как это тяжело оказалось… Перерыта тонна источников.
Код:
<?php // set up or arguments for our custom query $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1; $posts_per_page = 2; $offset = ( $paged - 1 ) * $posts_per_page; $query_args = array( 'post_type' => 'realestate', 'posts_per_page' => $posts_per_page, 'paged' => $paged, 'offset'=> $offset ); // create a new instance of WP_Query $wp_query = new WP_Query( $query_args ); ?> <?php if ( $wp_query ->have_posts() ) : while ( $wp_query ->have_posts() ) : $wp_query ->the_post(); // run the loop ?> <article> <h1><?php echo the_title(); ?></h1> <div class="excerpt"> <?php the_excerpt(); ?> </div> </article> <?php endwhile; ?> <?php if ($wp_query ->max_num_pages > 1) { // check if the max number of pages is greater than 1 ?> <nav class="prev-next-posts"> <div class="prev-posts-link"> <?php echo get_next_posts_link( 'Older Entries' ); // display older posts link ?> </div> <div class="next-posts-link"> <?php echo get_previous_posts_link( 'Newer Entries' ); // display newer posts link ?> </div> </nav> <?php } ?> <?php else: ?> <article> <h1>Sorry...</h1> <p><?php _e('Sorry, no posts matched your criteria.'); ?></p> </article> <?php endif; ?>
Разбираем код:
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
этот кусок отвечает за вывод или невывод пейджинации (если есть, что выводить, то условие равно 1, то есть true).
Записываем количество выводимых постов в переменную (так как используем ее дважды):
$posts_per_page = 5;
Далее загоняем аргументы в функцию вывода постов:
$query_args = array( 'post_type' => 'post', 'category__not_in' => array( 3, 1 ), 'posts_per_page' => $posts_per_page, 'paged' => $paged, 'offset'=> $offset
);
Если нужно указать категорию, то добавляем в аргументы — ‘category_name’ => ‘tutorials’ — где tutorials меняем на свою категорию. Не забываем ставить запятые после каждого следующего аргумента, кроме последнего.
Если нужно вывести все посты КРОМЕ каких-то категорий (как у меня), то вместо этой строки пишем:
'category__not_in' => array( 3, 1 )
где 3 и 1 — айдишники исключенных категорий. (Берутся из урлы открытой в админке категории).
Теперь самое главное, без этой строки страница при пэйджинации показывает одни и те же посты!!!
То есть листаем, видим в адресе изменение урлы — /page/2/, /page/3/ и так далее, а контент один и тот же — первые пять постов блога.
Итак, это значение offset:
'offset'=> $offset
Для него разработна функция, которая и делает то самое перелистывание:
$offset = ( $paged - 1 ) * $posts_per_page;
$posts_per_page — это второе использование переменной с количеством выводимых постов.
You must be logged in to post a comment.