在特定的 Woocommerce 产品类别档案页面上显示产品属性

2024-01-10

我想在类别页面上显示两个属性,仅在特定类别上显示属性名称和值。

我发现的这段代码显示了属性的标签,但复制了值,我真的很难显示类别变量。任何帮助是极大的赞赏。

代码:

add_action('woocommerce_after_shop_loop_item','add_attribute');
function add_attribute() {
    global $product;

    $product_attributes = array( 'pa_set', 'pa_team');
    $attr_output = array();

    // Loop through the array of product attributes
    foreach( $product_attributes as $taxonomy ){
        if( taxonomy_exists($taxonomy) ){
            $label_name = get_taxonomy( $taxonomy )->labels->singular_name;
            $value = $product->get_attribute('pa_set');

               if( ! empty($value) ){
                // Storing attributes for output
                $attr_output[] = '<span class="'.$taxonomy.'">'.$label_name.': 
    '.$value.'</span>';
            }
        }
    }

    // Output attribute name / value pairs separate by a "<br>"
    echo '<div class="product-attributes">'.implode( '<br>', $attr_output 
    ).'</div>'; 
}

Updated- 问题来自以下行,其中产品属性属性值始终针对相同的产品属性:

$value = $product->get_attribute( 'pa_set' );

应该是这样的:

$value = $product->get_attribute( $taxonomy );

完整的重新访问代码将是:

add_action('woocommerce_after_shop_loop_item','display_loop_product_attribute' );
function display_loop_product_attribute() {
    global $product;

    $product_attributes = array('pa_set', 'pa_team'); // Defined product attribute taxonomies.
    $attr_output = array(); // Initializing

    // Loop through the array of product attributes
    foreach( $product_attributes as $taxonomy ){
        if( taxonomy_exists($taxonomy) ){
            if( $value = $product->get_attribute($taxonomy) ){
            // The product attribute label name
            $label_name = wc_attribute_label($taxonomy);
                // Storing attributes for output
                $attr_output[] = '<span class="'.$taxonomy.'">'.$label_name.': '.$value.'</span>';
            }
        }
    }
    // Output attribute name / value pairs separate by a "<br>"
    echo '<div class="product-attributes">'.implode('<br>', $attr_output).'</div>';
}

代码位于活动子主题(或活动主题)的 function.php 文件中。经过测试并有效。


定位产品类别存档页面:

你将使用条件标签is_product_category() https://docs.woocommerce.com/document/conditional-tags/#section-5在函数内部IF陈述…

对于特定的产品类别归档页面,您可以设置它们正如这里所解释的 https://docs.woocommerce.com/document/conditional-tags/#section-5在数组中的函数内部,例如:

if( is_product_category( array('chairs', 'beds') ) {
    // Here go the code to be displayed
}

您只需要在数组中设置正确的产品类别...


有关的:在自定义主页和产品类别档案中显示 WooCommerce 产品属性 https://stackoverflow.com/questions/55129529/show-woocommerce-product-attributes-in-custom-home-and-product-category-archives/55131199#55131199

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在特定的 Woocommerce 产品类别档案页面上显示产品属性 的相关文章

随机推荐

  • Gradle 和插件更新在 Android Studio 中出现错误

    我刚刚将 Android Studio 从 2 1 更新到 3 1 旧版本的 Gradle 运行良好 但速度缓慢 因为它与新版本的 Android Studio 不兼容 我使用以下选定的答案更新了 Gradle 至 4 4 和插件 至 3
  • java - 来自另一个目录的类的初始包

    我有一些问题如何从另一个目录的类文件初始化包 File file new File D java myproject Name pack time MyClass class URL cp new File file getParent t
  • 如何在visionOS中旋转ModelEntity?

    当将模型加载为 Model3D 对象时 您可以添加手势修改器 如下所示 Model3D named model name bundle realityKitContentBundle model in model resizable asp
  • Ionic 2:无法调试在Android设备上运行的应用程序

    重现步骤 1 创建新项目https github com driftyco ionic starter super https github com driftyco ionic starter super2 运行 ionic run an
  • PySide:如何放大QTableWidget中的图像?

    我在使用 PySide QTableWidget 时遇到问题 我需要在所有行的第一列中添加图像预览 我正在尝试使用 QIcon 添加此内容 library table insertRow index library table setIte
  • 在 JavaScript 中创建隐藏字段

    如何在 JavaScript 中将隐藏字段创建为特定的表单
  • 神秘的CloudFront“错误请求”

    我已经设置了一个新的域和 Web 服务器 以及一个为其提供服务的 CloudFront 发行版 CloudFront 已成功在其自己的域上为站点提供服务 d1lnegrqin0up5 cloudfront net 我希望 mpe io 不带
  • 为什么 MongoDb 不将我的斜杠存储在该字符串中?

    谁能告诉我为什么这个命令在 MongoDB shell 客户端不起作用 db coll update live true set mask D D D D D D D D false true but db coll findOne id
  • Unicode 符号和操作系统/浏览器字体支持

    有很多精彩的 unicode 符号 这真太了不起了 但如果我不知道我的用户的字体是否支持它们 它们就毫无用处 我怎样才能找到它 我可以跟踪用户的字体是否支持 unicode 符号吗 有什么办法可以有某种后备吗 如果不支持此 unicode
  • Microsoft.Practices.ServiceLocation 来自哪里?

    有谁知道哪里Microsoft Practices ServiceLocation来自 这是 MS EnterpriseLibrary 中使用的命名空间和 dll 诚然 这是一个非常简单的 dll 只有少数类 使用反射器 但我找不到它的已发
  • 动态改变admob横幅尺寸

    事情是这样的 你可能知道 Admob 有一个AdSize 函数 你把它放在哪里Banner要显示横幅广告和平板电脑横幅的 AD banner 我想要做的是获取设备的屏幕尺寸 以便我可以将其放入 if 语句中 然后为正确的设备放置正确的横幅
  • 如何设置全局CURL速率(速度)限制?

    我环顾四周寻找 CURL 设置文件 但在 etc 中没有找到它 并且在curl 站点 ether 上也没有找到太多 所以基本上我想要做的就是设置curl可以上传的最大速度限制 无论有多少个实例正在运行 以便我的服务器有一些上传能力留给其他任
  • python 子进程正在覆盖用于标准输出的文件 - 我需要它附加到文件(Windows)

    我想附加STDOUT of subprocess call 到现有文件 我下面的代码覆盖该文件 log file open log file path r cmd r echo some info for the log file subp
  • 缩进多行标签

    我有以下自动生成的 HTML http jsfiddle net BrV8X http jsfiddle net BrV8X 使用 CSS 缩进标签以便单选按钮下方有一些空白的建议方法是什么 label display block marg
  • geom_smooth 自定义线性模型

    一边看着this https stackoverflow com questions 44766497 plotting multiple regression lines based on a variable in rs ggplot2
  • 如何隐藏winforms numericUpDown控件上的箭头?

    为了隐藏箭头 我添加了 numericUpDown Controls 0 Hide 它隐藏了箭头 但在打开表单时留下了空白 如何将它们隐藏为像简单的文本框一样 您可以通过访问 numericUpDown 来隐藏箭头Controls财产 您可
  • 按需复制 Google 电子表格

    我创建了一个相当复杂的 Google 电子表格 我希望用户能够单击按钮或点击链接 并获取此电子表格的副本 他们可以在其中填写数据 我稍后会检查手动处理这些数据 无论如何 我可以通过复杂的链接或一些 JavaScript 甚至可能使用服务器端
  • VS Code 中的快速文本滚动

    我正在 macOS 上测试 Visual Studio Code 想知道是否有可以加快滚动速度的组合键 例如 我需要这个来快速从代码的早期部分转到文件末尾的部分 e g in Emacs when I hold up down arrow
  • 使用 Bootstrap 3 如何隐藏表中的列?

    我试图在我的响应式设计中隐藏列col xs and col sm 我首先尝试使用hidden xs hidden sm类 但这不起作用 我也尝试过使用visible desktop正如这里提到的 Twitter Bootstrap 响应式
  • 在特定的 Woocommerce 产品类别档案页面上显示产品属性

    我想在类别页面上显示两个属性 仅在特定类别上显示属性名称和值 我发现的这段代码显示了属性的标签 但复制了值 我真的很难显示类别变量 任何帮助是极大的赞赏 代码 add action woocommerce after shop loop i