如何根据WooCommerce产品属性值控制自定义标签的显示?
解决方案
要实现仅当产品属性pa_data-quality值为icecat时显示自定义标签,你需要在添加标签前先获取当前产品并检查属性值,修改后的代码如下:
function woo_new_product_tab( $tabs ) { // 获取当前产品对象 global $product; // 非产品页面直接返回原标签 if ( ! $product ) { unset( $tabs['description'] ); return $tabs; } // 获取目标属性的值 $data_quality = $product->get_attribute('pa_data-quality'); // 仅当属性值为icecat时添加自定义标签 if ( 'icecat' === trim( $data_quality ) ) { $tabs['featurestab'] = array( 'title' => __( 'From the Manufacturer', 'woocommerce' ), 'priority' => 0, 'callback' => 'icecat_tab_content' ); } // 移除默认描述标签 unset( $tabs['description'] ); return $tabs; } function icecat_tab_content() { echo '<div id="Container3"></div> <div id="Container4"></div> <div id="Container5"></div> <div id="Container6"></div> <div id="Container7"></div> <div id="Container9"></div> <div id="Container10"></div> <div id="Container11"></div>'; } add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' );
关键说明:
- 获取产品对象:通过
global $product拿到当前页面的产品实例,确保只在产品页面执行属性检查 - 属性值判断:使用
get_attribute('pa_data-quality')获取属性值,trim()处理可能的空格,避免因格式问题导致判断失效 - 条件添加标签:只有当属性值严格等于
icecat时,才将自定义标签加入$tabs数组,否则不添加,彻底避免空白标签出现 - 保留移除描述标签:无论是否显示自定义标签,都移除默认的描述标签,符合你的原始需求
内容的提问来源于stack exchange,提问作者John Gray
相关产品推荐
相关产品推荐

