Пагинация с 5 записями на странице

10 дек. 2015 г., 15:53:03
Просмотры: 41.3K
Голосов: 3

Я пытаюсь создать список записей с пагинацией и использовал 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, а затем создал страницу с названием 'Новости', и именно там находится этот код. Может ли это быть причиной?

1
Комментарии

Возможный дубликат Функция next_posts_link() показывает дополнительную пустую страницу

Pieter Goosen Pieter Goosen
10 дек. 2015 г. 17:52:16
Все ответы на вопрос 1
7

Этот код работает для меня на отдельной странице с использованием шаблона. Убедитесь, что вы установили 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();
10 дек. 2015 г. 16:47:30
Комментарии

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

user1486133 user1486133
10 дек. 2015 г. 16:48:21

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

user1486133 user1486133
10 дек. 2015 г. 16:49:28

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

jgraup jgraup
10 дек. 2015 г. 16:51:27

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

jgraup jgraup
10 дек. 2015 г. 16:54:56

И чем это делает ваш ответ отличным от моего.....???????

Pieter Goosen Pieter Goosen
10 дек. 2015 г. 17:00:11

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

jgraup jgraup
10 дек. 2015 г. 17:02:33

@jgraup спасибо, да, это было правильное решение. Спасибо, что предложили его и при этом не снисходили :)

user1486133 user1486133
10 дек. 2015 г. 17:38:49
Показать остальные 2 комментариев