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

如何保存WooCommerce购物车页面自定义礼品复选框的值?

WooCommerce购物车礼品复选框值保存及后台展示方案

你已经完成了购物车页面复选框的显示,接下来需要通过以下步骤实现值的保存和后台展示:

1. 保存复选框值到WooCommerce会话

购物车到结账页面的切换需要会话传递值,添加以下代码:

// 保存礼品复选框值到WooCommerce会话
add_action('woocommerce_cart_updated', 'save_gift_checkbox_value_to_session');
function save_gift_checkbox_value_to_session() {
    if (isset($_POST['is_gift'])) {
        WC()->session->set('is_gift', 'yes');
    } else {
        WC()->session->set('is_gift', 'no');
    }
}

// 结账页面加载时,从会话中恢复复选框值
add_filter('woocommerce_checkout_get_value', 'restore_gift_checkbox_value_from_session', 10, 2);
function restore_gift_checkbox_value_from_session($value, $input) {
    if ($input === 'is_gift') {
        return WC()->session->get('is_gift') === 'yes' ? 'yes' : '';
    }
    return $value;
}

2. 将值永久保存到订单元数据

订单创建时,把会话中的值写入订单元数据:

// 将礼品复选框值保存到订单元数据
add_action('woocommerce_checkout_create_order', 'save_gift_checkbox_to_order_meta');
function save_gift_checkbox_to_order_meta($order) {
    $is_gift = WC()->session->get('is_gift');
    if ($is_gift) {
        $order->update_meta_data('_is_gift', $is_gift);
        // 可选:清除会话中的值
        WC()->session->__unset('is_gift');
    }
}

3. 在后台订单管理界面展示值

添加代码在后台订单详情页和订单列表显示礼品状态:

// 在后台订单详情页面显示礼品复选框的值
add_action('woocommerce_admin_order_data_after_billing_address', 'display_gift_checkbox_in_admin_order');
function display_gift_checkbox_in_admin_order($order) {
    $is_gift = $order->get_meta('_is_gift');
    echo '<div class="address">
            <p><strong>' . __('Is this a gift order?', 'your-theme-textdomain') . '</strong><br>
            ' . ($is_gift === 'yes' ? __('Yes', 'your-theme-textdomain') : __('No', 'your-theme-textdomain')) . '</p>
          </div>';
}

// 可选:在订单列表添加列显示礼品状态
add_filter('manage_edit-shop_order_columns', 'add_gift_order_column');
function add_gift_order_column($columns) {
    $columns['is_gift'] = __('Gift Order', 'your-theme-textdomain');
    return $columns;
}

add_action('manage_shop_order_posts_custom_column', 'display_gift_order_column_value');
function display_gift_order_column_value($column) {
    global $post;
    if ($column === 'is_gift') {
        $order = wc_get_order($post->ID);
        $is_gift = $order->get_meta('_is_gift');
        echo $is_gift === 'yes' ? __('Yes', 'your-theme-textdomain') : __('No', 'your-theme-textdomain');
    }
}

整合代码

将以上所有代码(包括你原来的复选框显示代码)添加到主题的functions.php文件,或者自定义的PHP插件文件中即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:54:56