На моем сайте WordPress я использую Algolia для поиска продуктов Woocommerce.
На страницах категорий все работает как положено, например www.example.com/products
Проблема возникает в корне домена. Когда я делаю поиск, параметры запроса добавляются: www.example.com/?q=myquery&hPP=12&idx=all&p=0&is_v=1
и теперь, если я перезагрузлю страницу, я попаду на страницу постов в блоге, скорее всего, результаты поиска в WordPress …
Желаемое действие будет таким же, как и на страницах категорий, или в любом другом месте, отличном от корневого, поэтому после перезагрузки страницы оно должно показывать ту же самую страницу с точно таким же поисковым запросом.
Возможные решения, которые я могу придумать:
&p=0
, удаление этого и перезагрузка страницы работает как нужно.PS! В настройках WordPress постоянные ссылки я выбрал http://www.domain.com/%postname%/
Кажется, вы знаете об этом, но, поскольку другие могут наткнуться на ваш вопрос, я просто скажу здесь, что интеграция Algolia for WordPress на момент написания статьи в настоящее время находится в стадии разработки. бета и не поддерживается (см. предупреждение в README РЕПО).
Кроме того, исходя из параметров, о которых вы говорите, кажется, что вы используете последнюю версию в ветви разработки репозитория.
В этой версии параметры запроса добавляются в URL библиотекой, которая называется внутренне instantsearch.js
.
Эта библиотека, при инициализации, предоставляет urlSync.useHash
параметр, который заставит библиотеку хранить эти параметры в хэше вместо параметров запроса. Просто установите его true
,
Если установлено значение true, URL будет основан на хэше. В противном случае он будет использовать параметры запроса, используя современный API истории.
Так как здесь, кажется, есть только один параметр, который вызывает проблемы, urlSync.mapping
Параметр может быть лучшим решением. Однако я не уверен, что эта опция доступна в instantsearch.js
версия, которую использует интеграция.
Объект, используемый для определения параметра запроса замены, который будет использоваться вместо другого. Ключи являются текущими параметрами запроса и определяют новое значение, например,
{ q: 'query' }
,
В вашем случае это будет { p: 'new_parameter_name_that_wont_conflict' }
,
Других решений пока нет …