2017-04-05 19 views
1

我有一個願望清單頁面,顯示所有保存的產品。產品被保存在cookie中,並且可以在查看單個產品時通過點擊按鈕來完成。保存Cookie的產品ID不適用於兩種語言wordpress

在該單一產品上,有一個帶有兩個狀態的圖標,選中或未選中。目的是「稍後保存」。如果特定產品已經在cookie列表中,那麼我添加「selected」類,以便圖標正確更改,以便讓用戶知道他已經「爲以後保存」此產品。

有3種產品的cookie的例子:185-589-382

這意味着我們有三個產品編號的185,589,382

每個產品都有每種語言不同的ID。這意味着在「EN」(英語)的產物具有ID 100,但在其它語言中的ID可以是252

實施例:

讓我們假設我有具有與ID 100在「僅一個產品EN」。該產品在其他語言的ID爲200

當來訪mysite.com/wishlist它顯示在「EN」(defualt語言)

產品在參觀mysite.com/el/願望清單它顯示「GR」中的產品。

它工作得很好,即使它們有不同的ID。 (可能是因爲有通過我使用的插件它們之間的連接)

我的問題

當「EN」,它具有ID 100查看單品,假設ID已在cookie列表 - 圖標具有選定的狀態。當我按下語言切換器時,切換到顯示產品的其他語言,但該圖標未處於選定狀態。我知道發生這種情況是因爲在cookie列表中,我保存了id爲100的產品(僅在「EN」中),而不是200,這是另一種語言的ID。

有什麼解決方法嗎?

使用WPML插件。

  • 沒有張貼任何代碼,因爲我沒有與編碼問題,但如果這會幫助你,然後隨便問。
  • 當前正在搜索一種方式來查找這些帖子如何連接,所以也許我改變了我保存到我的cookie列表中的內容。一種方法是保存每種語言的所有ID,但我想保持清潔 - 找到最好的方法。
+1

我想我會遍歷心願的ID陣列上,並檢查WPML語言爲ID,如果從當前選擇的語言不同,我會查找相應的頁面中選擇的語言,如果這是當前頁面然後顯示在心願。 請記住,所有語言中刪除ID,當你刪除它作爲一個心願項目,可能檢查這樣你就不會在兩種不同的語言將在同一個頁面到您的心願。 – Sprazer

+0

我目前使用所有語言的一個列表。改變檢查一點點,使其工作 - 檢查答案。謝謝! –

回答

0

實測值使用下述WPML功能的解決方案:

icl_object_id(get_the_ID(), 'post', false, ICL_LANGUAGE_CODE); 

此函數返回 「ICL_LANGUAGE_CODE」 的文章ID - 這意味着當前語言。

所以,我存儲在一個數組$mLanguages所有可用的語言。

foreach($mLanguages as $language) { 
    $mIDArray[] = icl_object_id($mCurrentPostID, 'post', false, $language); 
} 

下面是這是檢查是否帖子ID是在Cookie列表之前的代碼塊:那麼,在當前產品的每一種語言使用的for循環來存儲$mIDArray所有ID的

if(isset($_COOKIE['mSavedList'])) { 
    $mListOfSavedItems = $_COOKIE['mSavedList']; 
    $mListOfSavedItems = explode('-', $mListOfSavedItems); 

    if(in_array(get_the_ID(), $mListOfSavedItems)) 
     $isCurrentProductSaved = true; 
} 

$isCurrentProductSaved是我在談論的「選擇」聲明。 所以我改成了

if(isset($_COOKIE['mSavedList'])) { 
    $mListOfSavedItems = $_COOKIE['mSavedList']; 
    $mListOfSavedItems = explode('-', $mListOfSavedItems); 

    foreach($mListOfSavedItems as $item){ 

     if($mCurrentPostID == $item) 
      $isCurrentProductSaved = true; 
     else if(in_array($item, $mIDArray)) 
      $isCurrentProductSaved = true; 

    } 
} 

換句話說:

之前,我是檢查,如果在我的Cookie列表中當前存在的帖子的ID。現在我正在檢查我的Cookie列表中是否存在當前帖子ID(或此帖子的所有translatables ID)。

發現一個錯誤,但:

我不管保存當前職務的ID到Cookie列表的語言。爲了使它工作,我總是保存默認語言「EN」的帖子ID。

相關問題