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

如何在WooCommerce中保存并展示后台下拉选择框选中值

解决方案

1. 修复后台选择框的回显逻辑

你之前的代码中$tip_produs变量需要从商品的自定义字段读取,才能让选中选项自动带上selected="selected"属性。修改后台字段渲染代码:

// 在商品编辑页的定价区域添加选择框
add_action( 'woocommerce_product_options_pricing', 'add_tip_produs_product_field' );
function add_tip_produs_product_field() {
    global $product_object;

    // 获取已保存的数值,默认设为'buc'
    $tip_produs = get_post_meta( $product_object->get_id(), '_tip_produs', true );
    $tip_produs = empty( $tip_produs ) ? 'buc' : $tip_produs;

    woocommerce_wp_select( array(
        'id'            => 'tip_produs',
        'label'         => __( 'Unitate produs', 'woocommerce' ),
        'class'         => 'tip_produs',
        'options'       => array(
            'set'    => 'Vand la set',
            'buc'    => 'Vand la buc',
        ),
        'desc_tip'      => true,
        'description'   => 'Alege daca produsul se vinde la bucata sau la set.',
        'value'         => $tip_produs,
    ) );
}

2. 实现选择框值的保存逻辑

添加保存代码,确保后台选择的数值能存储到商品的自定义字段中:

// 保存选择框的选中值
add_action( 'woocommerce_process_product_meta', 'save_tip_produs_product_field' );
function save_tip_produs_product_field( $product_id ) {
    if ( isset( $_POST['tip_produs'] ) ) {
        $tip_produs = sanitize_text_field( $_POST['tip_produs'] );
        // 仅允许预设的两个有效值,避免非法输入
        if ( in_array( $tip_produs, array( 'set', 'buc' ) ) ) {
            update_post_meta( $product_id, '_tip_produs', $tip_produs );
        }
    }
}

3. 前端购物车按钮前展示选中单位

使用你提到的钩子,读取保存的自定义字段值并展示:

// 在加入购物车按钮前显示商品单位
add_action( 'woocommerce_after_add_to_cart_quantity', 'display_tip_produs_frontend' );
function display_tip_produs_frontend() {
    global $product;

    // 获取保存的单位值,默认显示'buc'对应的文本
    $tip_produs = get_post_meta( $product->get_id(), '_tip_produs', true );
    $unit_text = $tip_produs === 'set' ? 'Vand la set' : 'Vand la buc';

    echo '<span class="qty-suff">' . esc_html( $unit_text ) . '</span>';
}

关键说明

  • 用_tip_produs作为存储的meta key,下划线前缀可让字段在后台自定义字段列表中隐藏
  • 保存时做了输入验证,仅允许预设的两个值,提升安全性
  • 前端展示用esc_html()转义文本,避免XSS风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:01:27