Конфликт параметров запроса WordPress + Algolia

На моем сайте WordPress я использую Algolia для поиска продуктов Woocommerce.

На страницах категорий все работает как положено, например www.example.com/products

Проблема возникает в корне домена. Когда я делаю поиск, параметры запроса добавляются: www.example.com/?q=myquery&hPP=12&idx=all&p=0&is_v=1и теперь, если я перезагрузлю страницу, я попаду на страницу постов в блоге, скорее всего, результаты поиска в WordPress …

Желаемое действие будет таким же, как и на страницах категорий, или в любом другом месте, отличном от корневого, поэтому после перезагрузки страницы оно должно показывать ту же самую страницу с точно таким же поисковым запросом.

Возможные решения, которые я могу придумать:

  1. Отключите параметры запроса для WordPress, чтобы он не выполнял никаких действий, если URL-адрес содержит один
  2. Измените параметры запроса Algolia на что-то, что WordPress не воспримет как поисковый запрос, проблема заключается в &p=0, удаление этого и перезагрузка страницы работает как нужно.

PS! В настройках WordPress постоянные ссылки я выбрал http://www.domain.com/%postname%/

2

Решение

Кажется, вы знаете об этом, но, поскольку другие могут наткнуться на ваш вопрос, я просто скажу здесь, что интеграция 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' },

6

Другие решения

Других решений пока нет …