Якщо не працює пагінація на сторінці пошуку
Зустрівся нещодавно з маленькою, незрозумілою і неприємною проблемою – в одному з шаблонів чомусь не працювала пагінація на сторінці пошуку. Пагінація організовувалась плагіном 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 , після чого все запрацювало.