我需要一些食物来思考这个问题,因为我在这里很难找到一个像样的解决方案。
有一个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)因此,“食物”这一类别就突出了出来。然后我选择产品“汉堡包”。现在,由于产品“汉堡包”也属于“快餐”类别,“快餐”类别显示为“活动”。
活动类别应基于产品最初选择的类别(“食品”)。如果你进入“快餐”类别并选择“汉堡包”,那么“快餐”应该是活跃的。打开“汉堡包”从“食物”,“食物”应该是活跃的类别。
我的尝试是在显示所有产品时将permalink (<?php the_permalink(); ?>)中的类别更改为当前类别,但它只是感觉不太正确。
也许有人有更好的解决方案。
祝你今天愉快!
编辑:
我成功地用正确的类别创建了permalink:
$custom_permalink = get_settings('siteurl')."/".get_query_var('product_cat')."/".basename(get_permalink());可惜这不管用..。(将我重定向到“错误”类别)但我不喜欢这个黑客:)
发布于 2013-07-09 18:59:43
我让它起作用了。我就是这样做的:
在您的自定义模板文件/ your /woocommerce/Content-Product.php中,您将更改一个href。
生成新permalink的代码(使用当前选定的类别):
// 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());我还检查是否设置了一个类别(因为如果您正在查看“所有产品”,则没有一个类别,在本例中,我循环遍历产品并让它们的类别在permalink中使用)。
带有id 5的get_permalink基本上是我的商店页面,所以当您从商店中更改permalink时,它会保持动态。不喜欢硬编码的东西,因为它已经是一个丑陋的黑客。
将此代码放在包装您的产品的href之前,在我的例子中,这是在第42行(Woocommerce V2.0.10)。然后将此更改为
<a href="<?php the_permalink(); ?>">至
<a href="<?php echo $custom_permalink; ?>">当你面对同样的问题时,我希望这会对你有所帮助!
https://stackoverflow.com/questions/17490933
复制相似问题