【问题标题】:Wordpress + Algolia query parameters conflictWordpress + Algolia 查询参数冲突
【发布时间】:2016-04-28 07:57:56
【问题描述】:

在我的 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%/

【问题讨论】:

  • 因此,感谢@Jerska,通过添加search.urlSync.mapping = {p:'px'} 可以轻松解决问题。虽然,知道在 Wordpress 方面是否也有解决方案仍然很有趣?

标签: php wordpress algolia


【解决方案1】:

您似乎已经意识到这一点,但由于其他人可能会偶然发现您的问题,我将在这里声明,在撰写本文时,用于 WordPress 集成的 Algolia 目前处于 beta 和不支持(请参阅the repo's README 中的警告)。

此外,根据您所说的参数,您似乎使用的是存储库开发分支中的最新版本。

在此版本中,查询参数由内部使用的库instantsearch.js 添加到 URL。


该库在初始化时会公开urlSync.useHash 参数,这将使库将这些参数存储在散列而不是查询参数中。只需将其设置为true

如果设置为 true,则 url 将基于哈希。否则,它将使用现代历史 API 的查询参数。


由于这里似乎只有一个参数会引起麻烦,所以urlSync.mapping 参数可能是一个更好的解决方案。但是,我不确定此选项在集成使用的 instantsearch.js 版本中是否可用。

对象用于定义替换查询参数以代替另一个。键是当前查询参数并为新值赋值,例如{ q: 'query' }.

在你的情况下,这将是{ p: 'new_parameter_name_that_wont_conflict' }

【讨论】:

  • 感谢您的回答!第二个选项似乎正是我想要的,即使是第一个也可以。但是当我在urlSync: true 之后将它们中的任何一个添加到我的search = instantsearch({}) 对象时,我会收到错误Uncaught SyntaxError: Unexpected token .。我在这里遗漏了一些明显的东西吗?
  • 好的,现在想通了:search.urlSync.mapping = {p:'px'} 完成了这项工作,最重要的是解决了主要问题!谢谢!
  • 我其实在想search = instantsearch({urlSync: {mapping: { p: 'px' }}})
  • 谢谢,这是有道理的,虽然我的版本也可以!
  • 对于最终阅读本文的人,请注意该插件从现在开始在官方插件目录中可用:wordpress.org/plugins/…
猜你喜欢
  • 1970-01-01
  • 2023-03-09
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 2012-08-27
  • 2020-12-03
相关资源
最近更新 更多