Цикл постов Wordpress с помощью запроса + have_posts () возвращает только их часть - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь создать собственную HTML карту сайта. Я использую следующий код PHP для получения всех сообщений на веб-сайте:

         $args = array(
        'post_type' => 'post'
    );

    $post_query = new WP_Query($args);

    if($post_query->have_posts() ) {
        while($post_query->have_posts() ) {
            $post_query->the_post();
            ?>
            <a href=" <?php the_permalink(); ?>"><?php the_title(); ?></a>
            <?php
            }
        }

    wp_reset_postdata();

По какой-то причине приведенный выше код печатает только ссылки из 10 последних сообщений. У меня есть более 30 сообщений на моем сайте. Поскольку я не очень доволен PHP, что-то не так с приведенным выше кодом? Есть ли другой способ добиться того же результата? Спасибо.

Ответы [ 3 ]

1 голос
/ 02 марта 2020

Вам необходимо установить аргумент posts_per_page в вашем запросе. -1 равно всем сообщениям.

     $args = array(
    'post_type' => 'post',
    'posts_per_page' => -1
);

$post_query = new WP_Query($args);
1 голос
/ 02 марта 2020

Чтобы показать больше постов на одной странице, можно также настроить обычные настройки Wordpress в бэкэнде под Settings > Reading > Blog pages show max. XX pages (точные термины могут быть немного другими, я обычно использую другой язык)

В качестве альтернативы вы можете добавить соответствующий параметр в аргументы запроса (массив $args), например 'posts_per_page' => 30,.

0 голосов
/ 02 марта 2020

Пока оба ответа верны. Давайте посмотрим на некоторые причины, почему вы можете захотеть сделать одно над другим.

Изменение настроек> Чтение> Страницы блога отображаются не более.

Это может повлиять на другие запросы на сайте, которые не имеют настройки posts_per_page в них. Это имеет возможность иметь скрытые и непреднамеренные последствия при взаимодействии с другими плагинами.

Использование

     $args = array(
    'post_type' => 'post',
    'posts_per_page' => -1
);

$post_query = new WP_Query($args);

Имеет возможность создавать бесконечные страницы прокрутки в зависимости от того, как она используется. 300 постов? нет проблем, они просто были брошены на страницу.

Возможно, вы захотите ограничить их, исходя из возможного дизайна, чем-то более удобным для пользователя и используя нумерацию страниц для дополнительной обработки.

...