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

如何根据产品类型显示/隐藏WooCommerce后台产品自定义字段

解决WooCommerce自定义字段仅在简单产品显示的问题

你遇到的问题是因为只给输入框添加了show_if_simple类,而标签、描述等元素不在这个输入框的容器内,所以无法被隐藏。要通过WooCommerce原生工具解决,有两种可靠方式:

方法一:利用WooCommerce原生产品类型控制类

直接给包裹自定义字段的外层div添加show_if_simple和hide_if_variable类,WooCommerce后台会自动根据当前产品类型控制整个区域的显示/隐藏,这样标签、输入框、描述会一起被控制:

add_action( 'woocommerce_product_options_sku', 'prodcode_fields');

function prodcode_fields() {
    global $post, $thepostid, $product_object;

    // 给外层div添加原生控制类
    echo '<div class="options_prodcode_fields show_if_simple hide_if_variable">';
   
    woocommerce_wp_text_input(
        array(
            'id' => '_prodcode_good_number',
            'value' => $product_object->get_meta('_prodcode_number', true),
            'type' => 'number',
            'label' => 'Product Code',
            'desc_tip' => true,
            'description' => __('Product Code', 'sv-prodcode'),
        )
    );

    echo '</div>';
}

方法二:通过产品类型条件判断输出

直接在函数里判断当前产品类型,仅当产品为简单产品时才输出整个自定义字段,这也是WooCommerce原生的判断方式:

add_action( 'woocommerce_product_options_sku', 'prodcode_fields');

function prodcode_fields() {
    global $post, $thepostid, $product_object;

    // 判断当前产品是否为简单产品
    if ( $product_object->get_type() === 'simple' ) {
        echo '<div class="options_prodcode_fields">';
       
        woocommerce_wp_text_input(
            array(
                'id' => '_prodcode_good_number',
                'value' => $product_object->get_meta('_prodcode_number', true),
                'type' => 'number',
                'label' => 'Product Code',
                'desc_tip' => true,
                'description' => __('Product Code', 'sv-prodcode'),
            )
        );

        echo '</div>';
    }
}

两种方法都符合WooCommerce原生规范,第一种利用后台的类控制逻辑,第二种通过产品类型直接判断,都能实现自定义字段不在可变产品中显示的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:52:08