2016-04-28 90 views
2

在我的Wordpress網站上,我使用Algolia搜索Woocommerce產品。Wordpress + Algolia查詢參數衝突

在類別頁面上的所有內容均按預期工作,例如, 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%/

+0

所以,感謝@Jerska,通過添加'search.urlSync.mapping = {p:'px'}'可以輕鬆解決問題。儘管如此,知道Wordpress方面是否還有解決方案仍然很有趣? –

回答

6

看起來好像你已經意識到這一點,但是由於其他人可能偶然發現了你的問題,我只想在此陳述,Algolia for WordPress集成在寫作,目前在測試版,不支持(請參閱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' }

+0

謝謝你的回答!第二種選擇似乎正是我所期待的,即使是第一種選擇。但是,當我在'urlSync:true'後面添加其中的任何一個到'search = instantsearch({})'對象時,我會得到錯誤'Uncaught SyntaxError:Unexpected token .'。我在這裏錯過了很明顯的東西嗎 –

+0

好的,現在想通了:'search.urlSync.mapping = {p:'px'}'完成了這項工作,最重要的是解決了主要問題!謝謝! –

+0

我其實在考慮'search = instantsearch({urlSync:{mapping:{p:'px'}}})''。 – Jerska