You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce自定义产品标签代码报错及标签定制问题咨询

WooCommerce自定义产品标签问题解决方案

一、空标签隐藏功能报错修复

错误根源

代码中判断标签是否显示时,误用了ACF插件的get_field()函数,且字段名称与实际存储的元键不匹配:

  • 实际存储的元键是_key_features、_what_news、_faq,但判断时用了key_features_tab这类不存在的字段名
  • 未使用ACF插件,应改用WooCommerce原生的产品元数据获取方法

修复后的代码

替换原有的woo_custom_product_tabs函数:

add_filter( 'woocommerce_product_tabs', 'woo_custom_product_tabs' );
function woo_custom_product_tabs( $tabs ) {
    global $product;
    
    // 检查Key Features字段是否有实际内容
    $key_features = $product->get_meta( '_key_features' );
    if ( ! empty( trim( wp_strip_all_tags( $key_features ) ) ) ) { 
        $tabs['key_features_tab'] = array(
            'title'     => __( 'Key Features', 'woocommerce' ),
            'priority'  => 10,
            'callback'  => 'woo_key_features_tab_content'
        );
    }
    
    // 检查What News字段是否有实际内容
    $what_news = $product->get_meta( '_what_news' );
    if ( ! empty( trim( wp_strip_all_tags( $what_news ) ) ) ) {
        $tabs['what_news_tab'] = array(
            'title'     => __( 'What News?', 'woocommerce' ),
            'priority'  => 20,
            'callback'  => 'woo_what_news_tab_content'
        );
    }
    
    // 检查FAQ字段是否有实际内容
    $faq = $product->get_meta( '_faq' );
    if ( ! empty( trim( wp_strip_all_tags( $faq ) ) ) ) {
        $tabs['faq_tab'] = array(
            'title'     => __( 'FAQ', 'woocommerce' ),
            'priority'  => 30,
            'callback'  => 'woo_faq_tab_content'
        );
    }
    
    // 调整评论标签优先级
    $tabs['reviews']['priority'] = 40;

    return $tabs;
}

说明:使用trim(wp_strip_all_tags())是为了排除仅含HTML标签或空格的空内容,确保标签只在有实际文字时显示

二、虚拟产品相关标签处理

1. 永久删除默认Additional Info标签

在woo_custom_product_tabs函数中添加一行代码,直接移除默认标签:

add_filter( 'woocommerce_product_tabs', 'woo_custom_product_tabs' );
function woo_custom_product_tabs( $tabs ) {
    // 移除默认Additional Info标签
    unset( $tabs['additional_information'] );
    
    // 原有的自定义标签逻辑...
    
    return $tabs;
}

2. 创建独立的同名自定义Additional Info标签

如果需要保留“Additional Info”名称但完全独立于默认标签,可在移除默认标签后添加自定义标签:

add_filter( 'woocommerce_product_tabs', 'woo_custom_product_tabs' );
function woo_custom_product_tabs( $tabs ) {
    global $product;
    
    // 移除默认Additional Info标签
    unset( $tabs['additional_information'] );
    
    // 添加自定义Additional Info标签
    $custom_additional_info = $product->get_meta( '_custom_additional_info' );
    if ( ! empty( trim( wp_strip_all_tags( $custom_additional_info ) ) ) ) {
        $tabs['additional_information'] = array(
            'title'     => __( 'Additional Info', 'woocommerce' ),
            'priority'  => 15,
            'callback'  => 'woo_custom_additional_info_content'
        );
    }
    
    // 原有的自定义标签逻辑...
    
    return $tabs;
}

// 自定义Additional Info标签内容回调
function woo_custom_additional_info_content() {
    global $product;
    echo '<div><p>' . $product->get_meta( '_custom_additional_info' ) . '</p></div>';
}

同时需要在 metabox 中添加对应的编辑器字段,在additional_product_tabs_metabox_content函数里加入:

// Custom Additional Info
echo '<br><hr><h4>' . __( 'Additional Info', 'woocommerce' ) . '</h4>';
$value = get_post_meta( $post->ID, '_custom_additional_info', true );
wp_editor( $value, '_custom_additional_info', array( 'editor_height' => 100 ) );

并在save_additional_product_tabs函数中添加保存逻辑:

if( isset($_POST[ '_custom_additional_info' ]) )
    update_post_meta( $post_id, '_custom_additional_info', wp_kses_post($_POST[ '_custom_additional_info' ]) );

内容的提问来源于stack exchange,提问作者Adam Luper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 06:32:13