2013-07-05 410 views
2

我需要一些食物的思考,因爲我有麻煩在這裏找到一個體面的解決方案。woocommerce產品有多個類別,活動類別在側邊欄

有一個woocommerce商店,左側(側欄)和右側產品類別。一個產品可以有多個類別;例如,產品「漢堡」屬於「食品」和「快餐」類別。

現在在左邊我們有「食物」和「快餐」這兩個「漢堡」的分類。 我去「食品」類別。在側邊欄的左側,我突出了類別食品:

(start loop going through categories) 

if(get_query_var('product_cat') == $cat->slug) - echo <li class="active"> 
else - echo <li class="active"> 

(end loop) 

所以「食品」類別突出顯示。然後我選擇產品「漢堡」。 現在,因爲產品「漢堡包」也屬於「快餐」類別,所以「快餐」類別顯示爲有效。

活動類別應該基於從最初選擇產品的類別(「食品」)。如果您轉到「快餐」類別並選擇「漢堡」,那麼「快餐」應該處於激活狀態。從「食物」中打開「漢堡」,「食物」應該是活動類別。

我試圖在顯示所有產品時將固定鏈接(<?php the_permalink(); ?>)中的類別更改爲當前類別,但它只是感覺不到正確的方式。

也許有人有更好的解決方案。

祝你有個美好的一天!


編輯:

我已經成功地創建具有正確的類別的永久鏈接:

$custom_permalink = get_settings('siteurl')."/".get_query_var('product_cat')."/".basename(get_permalink()); 

可悲的是,這並不工作。(重定向我的「錯誤」類別)但我不喜歡這種黑客反正:) ..


回答

5

我得到它的工作。這是我做的:

在您的自定義模板文件/yourtheme/woocommerce/content-product.php中,您將更改href。

// HOOK FOR CORRECT ACTIVE SIDEBAR ELEMENT WHEN PRODUCT HAS MULTIPLE CATEGORIES 
    if(get_query_var('product_cat') == ""){ 
     $product_categries = get_the_terms($post->ID, 'product_cat'); 
     foreach ($product_categries as $category) { 
      $cur_cat = $category->slug; 
     } 

     $custom_cat = $cur_cat; 
    }else{ 
     $custom_cat = get_query_var('product_cat'); 
    } 

    $custom_permalink = get_permalink(5).$custom_cat."/".basename(get_permalink()); 

我還檢查是否類別設置(因爲是沒有的,如果你viewening「所有產品」,在這種情況下:生成新的永久鏈接(使用當前選擇的類別)

代碼我遍歷產品並獲得他們的類別在永久鏈接中使用它)。

帶有ID 5的get_permalink基本上是我的商店頁面,所以當您從商店更改永久鏈接時它會保持動態。不喜歡硬編碼的東西,因爲它已經是一個醜陋的黑客。

把這段代碼放在包裝你的產品的href之前,在我的例子中這是在第42行(Woocommerce V2.0.10)。 那麼這個A HREF改變從

<a href="<?php the_permalink(); ?>"> 

<a href="<?php echo $custom_permalink; ?>"> 

我希望這會幫助你,當你面對同樣的問題!

相關問題