WordPress как на ладони
Новые WordPress шаблоны Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Виктор

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

    Ответить3.7 года назад #
Здравствуйте, !     Войти . Зарегистрироваться