Если не работает пагинация на странице поиска
Встретился давеча с маленькой, непонятной и неприятной проблемой - в одном из шаблонов почему-то не работала пагинация на странице поиска. Пагинация организовывалась плагином 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 ){ $glue = strpos( $result, '?' ) ? '&' : '?'; return $result . $glue . 's=' . urlencode( $_REQUEST['s'] ); }
Этот код я добавил в начало файла темы search.php, после чего все заработало.