php - 具有多个类别的 woocommerce 产品,侧边栏中的事件类别

标签 php categories 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)

因此“食品”类别突出显示。然后我选择产品“Burger”。 现在,因为产品“Burger”也在类别“Fastfood”中,所以类别“Fastfood”显示为事件。

事件类别应基于最初选择产品的类别(“食品”)。如果您转到“快餐”类别并选择“汉堡”,则“快餐”应该处于事件状态。从“食物”中打开“汉堡”,“食物”应该是事件类别。

我的尝试是更改永久链接中的类别 (<?php the_permalink(); ?>)显示所有产品时转到当前类别,但感觉不正确。

也许有人有更好的解决方案。

祝你有个美好的一天!


编辑:

我已经成功地创建了具有正确类别的永久链接:

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

遗憾的是,这不起作用..(将我重定向到“错误”类别)但无论如何我都不喜欢这种黑客行为:)..


最佳答案

我成功了。这就是我所做的:

在您的自定义模板文件/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());

我还会检查是否设置了类别(因为如果您正在查看“所有产品”,则没有类别,在这种情况下,我循环遍历产品并获取它们的类别以在永久链接中使用它)。

id 为 5 的 get_permalink 基本上是我的商店页面,因此当您从您的商店更改永久链接时,它会保持动态。不喜欢这里硬编码的东西,因为它已经很丑陋了。

将此代码放在包装您的产品的 href 之前,在我的例子中,它位于第 42 行 (Woocommerce V2.0.10)。 然后将其更改为 href from

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

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

希望本文对您遇到同样的问题有所帮助!

关于php - 具有多个类别的 woocommerce 产品,侧边栏中的事件类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17490933/

相关文章:

php - 尝试使用 PHP 插入 MySQL 表时出现错误

php - 在 while 循环内调用 PHP 函数

php - 重定向 301 无法正常工作 codeigniter

php - 将用户自定义帐户字段添加到 WooCommerce 结帐

wordpress - woocommerce - 在插件中包含客户完成订单电子邮件模板

php - 允许用户将 "Tab-delimited"数据粘贴到文本区域中

gmail - 如何指示gmail标签 View ?

php - 将 PHP mysql 数据分类显示

MySQL 在一次查询中显示类别及其对公司的计数

php - 修改 Woocommerce 模板文件以按产品类别显示产品