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 ){
	$glue = strpos($result, '?') ? '&' : '?';
	return $result . $glue ."s={$_REQUEST['s']}";
}

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

7 комментов