Пагинация с 5 записями на странице
Я пытаюсь создать список записей с пагинацией и использовал Codex для написания кода, но, похоже, делаю что-то неправильно.
Вот мои аргументы для wp_query
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$the_query = new WP_Query(
array
(
'posts_per_page' => 5, // количество записей на странице
'post_type' => 'post', // тип записи
'paged' => $paged // номер текущей страницы
)
);
Содержимое $paged
действительно выводит 1
, как и ожидалось
Я добавил next_posts_link
в мой if
оператор, но ссылки не отображаются.
if ( $the_query->have_posts() ) {
previous_posts_link( '« Новые записи' );
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<div class="news-item">';
// содержимое записи здесь
echo '</div>';
}
next_posts_link( 'Старые записи »', 0 );
}
РЕДАКТИРОВАНИЕ
Страница, на которой это отображается, не является главной страницей, а является статической страницей, которую я создал. Я создал шаблон page-news.php
, а затем создал страницу с названием 'Новости', и именно там находится этот код. Может ли это быть причиной?
Этот код работает для меня на отдельной странице с использованием шаблона. Убедитесь, что вы установили next_posts_link( 'Старые записи »', $the_query->max_num_pages );
.
// устанавливаем параметр "paged" (используйте 'page', если запрос на статической главной странице)
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : '1';
$args = array (
'nopaging' => false,
'paged' => $paged,
'posts_per_page' => '5',
'post_type' => 'post',
);
// Создаем запрос
$query = new WP_Query( $args );
// Цикл вывода записей
if ( $query->have_posts() ) {
previous_posts_link( '« Новые записи' );
while ( $query->have_posts() ) {
$query->the_post();
echo '<div class="news-item">';
// содержимое записи здесь
echo '<h1 class="page-title screen-reader-text">' . the_title() . '</h1>';
echo '</div>';
}
next_posts_link( 'Старые записи »', $query->max_num_pages );
} else {
// записи не найдены
echo '<h1 class="page-title screen-reader-text">Записи не найдены</h1>';
}
// Восстанавливаем оригинальные данные записи
wp_reset_postdata();

Страница, на которой это отображается, не является главной, а статической страницей, которую я создал. Я создал шаблон page-news.php
, затем создал страницу с названием 'Новости', и именно там находится этот код. Может ли это быть причиной?

Какие изменения вы внесли в мой код? Я не могу найти изменений.

Я тестировал на главной странице вне основного цикла, проверю это на статической странице и сообщу, если будут отличия.

Итак, похоже, что проблема исчезает, когда вы помещаете это внутрь шаблона. Теперь, когда у меня есть рабочий пример, я могу провести дальнейшие тесты, секундочку.

@user1486133, теперь всё работает отлично. Просто добавьте $the_query->max_num_pages
в ваш next_posts_link
вместо 0.
