Почему на странице поиска в Вордпресс не отображается пагинация?

Как я могу настроить пагинацию для формы поиска на странице "Search" в WordPress, а также включить ее для других форм поиска на сайте? Как мне сделать так, чтобы при переходе на страницу поиска также выводилась пагинация? Сайт, который я разрабатываю, - https://trophy.fishing. Страница поиска доступна по ссылке https://trophy.fishing/search/. Также, у меня есть страница поиска с Template Name: Search, но мне больше не нужно использовать этот шаблон.
Изображение к вопросу
  • 25 декабря 2023 г. 16:47
Ответы на вопрос 2
Отсутствие пагинации на странице поиска в Вордпресс может быть вызвано различными причинами. Вот несколько возможных объяснений и решений:

1. Неправильное использование функции `paginate_links()`: Убедитесь, что вы правильно используете функцию `paginate_links()` в шаблоне страницы поиска. Она должна быть установлена вокруг цикла `while(have_posts())` и должна принимать необходимые параметры для создания пагинации.

2. Неправильное настраивание ссылки на страницу поиска: Убедитесь, что ссылка на страницу поиска настроена правильно через административную панель Вордпресс. Проверьте, правильно ли указана страница по умолчанию для отображения результатов поиска.

3. Проблемы с шаблоном страницы поиска: Если у вас есть отдельный шаблон страницы поиска, убедитесь, что в нем правильно настроена пагинация. Если вы больше не хотите использовать этот шаблон, вы можете удалить его и использовать стандартный шаблон страницы поиска.

Чтобы настроить пагинацию для формы поиска на странице "Search" в WordPress и включить ее для других форм поиска на сайте, вам потребуется создать свой собственный шаблон страницы поиска (если вы его еще не создали). В этом шаблоне вы можете использовать функцию `paginate_links()` для вывода пагинации.

Вот пример того, как вы можете добавить пагинацию к вашему шаблону страницы поиска:

```php
<?php
// Вогнутый цикл WP_Query
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
    's' => get_search_query(),
    'paged' => $paged
);
$search_query = new WP_Query($args);
?>

<?php if ($search_query->have_posts()) : ?>
    <?php while ($search_query->have_posts()) : $search_query->the_post(); ?>
        <!-- Вывод результатов поиска -->
    <?php endwhile; ?>

    <!-- Пагинация -->
    <?php
    $big = 999999999; // уникальное число, чтобы обойти ошибку
    echo paginate_links(array(
        'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
        'format' => '?paged=%#%',
        'current' => max(1, get_query_var('paged')),
        'total' => $search_query->max_num_pages,
    ));
    ?>

    <?php wp_reset_postdata(); ?>
<?php else : ?>
    <!-- Оповещение о пустом результате поиска -->
<?php endif; ?>
```

Помимо этого, убедитесь, что вы используете правильные параметры в функции `paginate_links()`, чтобы она соответствовала вашим требованиям в отношении вида и стиля пагинации.

Надеюсь, что это поможет вам добавить пагинацию на страницу поиска в Вордпресс и использовать ее для других форм поиска на вашем сайте.
Пагинация на Вашей статической странице /search/ не выводится потому, что функция the_posts_pagination() работает с изначальной выборкой (у статической страницы это всегда только одна запись) и ничего не знает о том, какие WP_Query  имеют место в шаблоне. Для пагинации произвольных выборок больше подходит функция paginate_links(), которой можно передать total и current из кастомной выборки.
Похожие вопросы