WordPress как на ладони
WordCamp Saint Petersburg 2018 wordpress jino

Если не работает пагинация на странице поиска

Встретился давеча с маленькой, непонятной и неприятной проблемой - в одном из шаблонов почему-то не работала пагинация на странице поиска. Пагинация организовывалась плагином wp-pagenavi. Самое интересное то, что виной такого странного поведения пагинации был именно шаблон, т.к. в default все работало.

Неправильная работа пагинации на странице поиска была в том, что при переходе на страницу, скажем, 2 URL терял запрос типа ?s=<поисковой запрос> и в итоге вместо page/2?s=<поисковой запрос> было просто page/2. В результате при переходе "выкидывало" на главную страницу.

Попытки вылечить болезнь, а не симптом, т.е. найти основную причину, успехом не увенчались - все вроде как в порядке (хоть что-то и не так). Так как в корне проблему решить я не смог, я пошел обходным путем и сделал такой костыль (хак):

<?php
// Хак, исправляющий нерабочую пагинацию на странице поиска в WordPress
function kama_fix_search_pagination($result){   return $result."?s={$_REQUEST['s']}";}
add_filter ('get_pagenum_link','kama_fix_search_pagination');
?>

Этот код я добавил в начало файла темы search.php, после чего все заработало как швейцарские часы smile

7 комментов
  • Дима

    У меня все равно не работает sad. GET['s'] теряется

    Ответить6.6 лет назад #
  • @ Zalmat cайт: sk59.ru

    У меня подобная проблема, только обычного вывода постов на главной.. Не могу понять как сделать

    Ответить6.5 лет назад #
  • a11igator cайт: www.compiny.ru

    у меня тоже была аналогичная проблема, немного поменял запрос:

    return $result."&s={$_REQUEST['s']}" ;
    1
    Ответить5.6 лет назад #
  • Ram

    Я использую также Blox CMS. Там кстати решена проблемы поисковой оптимизации при реверсивной пагинации в этой статье http://help.blox.ru/latest/?part_backward .

    Ответить5.6 лет назад #
  • Максим

    У меня та же проблема. Проанализировав код формы поиска, генерируемый стандартным виджетом, обратил внимание на метод формы: в виджете он "get", а у меня был "post". Поменял - заработало.

    1
    Ответить4.5 года назад #
    • Михаил

      в виджете он "get", а у меня был "post". Поменял - заработало.

      Тоже помогло, спс бро!

      Ответитьмесяц назад #
  • Виктор

    Спасибо, выручил) Не мог понять почему - но после установки хака все заработало)

    Ответить3.3 года назад #

Здравствуйте, !