2013-07-05 152 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; ?>"> 

我希望这会帮助你,当你面对同样的问题!

相关问题