Wordpress + Algolia 查询参数冲突
Wordpress + Algolia query parameters conflict
在我的 Wordpress 网站上,我使用 Algolia 搜索 Woocommerce 产品。
类别页面上的一切都按预期工作,例如www.example.com/products
问题出现在域根上。当我进行搜索时,正在添加查询参数:www.example.com/?q=myquery&hPP=12&idx=all&p=0&is_v=1
,现在如果我重新加载页面,我将被带到博客文章页面,很可能是 Wordpress 原生搜索结果...
所需的操作与在类别页面或除根以外的任何地方相同,以便在页面重新加载后它应该显示具有完全相同的搜索查询的完全相同的页面。
我能想到的可能的解决方案:
- 禁用 Wordpress 的查询参数,这样如果 URL 包含一个
就不会执行任何操作
- 将 Algolia 的查询参数更改为 Wordpress 不会将其作为搜索查询的内容,问题似乎出在
&p=0
,删除它,然后重新加载页面即可正常工作。
PS!在 Wordpress 永久链接设置中,我选择了 http://www.domain.com/%postname%/
您似乎已经意识到了这一点,但由于其他人可能会偶然发现您的问题,我将在此声明,在撰写本文时,Algolia for WordPress 集成目前处于 beta 且不受支持(请参阅 the repo's README 中的警告)。
此外,根据您所说的参数,您似乎使用的是存储库开发分支中的最新版本。
在此版本中,查询参数由内部使用的库 instantsearch.js
添加到 URL。
这个库在初始化时公开了 urlSync.useHash
参数,这将使库将这些参数而不是查询参数存储在哈希中。只需将其设置为 true
.
If set to true, the url will be hash based. Otherwise, it’ll use the query parameters using the modern history API.
既然这里似乎只有一个参数会引起麻烦,那么urlSync.mapping
参数可能是一个更好的解决方案。但是,我不确定此选项在集成使用的 instantsearch.js
版本中是否可用。
Object used to define replacement query parameter to use in place of another. Keys are current query parameters and value the new value, e.g. { q: 'query' }
.
在你的情况下,这将是 { p: 'new_parameter_name_that_wont_conflict' }
。
在我的 Wordpress 网站上,我使用 Algolia 搜索 Woocommerce 产品。
类别页面上的一切都按预期工作,例如www.example.com/products
问题出现在域根上。当我进行搜索时,正在添加查询参数:www.example.com/?q=myquery&hPP=12&idx=all&p=0&is_v=1
,现在如果我重新加载页面,我将被带到博客文章页面,很可能是 Wordpress 原生搜索结果...
所需的操作与在类别页面或除根以外的任何地方相同,以便在页面重新加载后它应该显示具有完全相同的搜索查询的完全相同的页面。
我能想到的可能的解决方案:
- 禁用 Wordpress 的查询参数,这样如果 URL 包含一个 就不会执行任何操作
- 将 Algolia 的查询参数更改为 Wordpress 不会将其作为搜索查询的内容,问题似乎出在
&p=0
,删除它,然后重新加载页面即可正常工作。
PS!在 Wordpress 永久链接设置中,我选择了 http://www.domain.com/%postname%/
您似乎已经意识到了这一点,但由于其他人可能会偶然发现您的问题,我将在此声明,在撰写本文时,Algolia for WordPress 集成目前处于 beta 且不受支持(请参阅 the repo's README 中的警告)。
此外,根据您所说的参数,您似乎使用的是存储库开发分支中的最新版本。
在此版本中,查询参数由内部使用的库 instantsearch.js
添加到 URL。
这个库在初始化时公开了 urlSync.useHash
参数,这将使库将这些参数而不是查询参数存储在哈希中。只需将其设置为 true
.
If set to true, the url will be hash based. Otherwise, it’ll use the query parameters using the modern history API.
既然这里似乎只有一个参数会引起麻烦,那么urlSync.mapping
参数可能是一个更好的解决方案。但是,我不确定此选项在集成使用的 instantsearch.js
版本中是否可用。
Object used to define replacement query parameter to use in place of another. Keys are current query parameters and value the new value, e.g.
{ q: 'query' }
.
在你的情况下,这将是 { p: 'new_parameter_name_that_wont_conflict' }
。