WordPress как на ладони

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

Встретился давеча с маленькой, непонятной и неприятной проблемой - в одном из шаблонов почему-то не работала пагинация на странице поиска. Пагинация организовывалась плагином 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, после чего все заработало.

4 комментария
    Войти