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

如何用WC Kalkulator字段值更新WooCommerce购物车商品属性

问题分析

原代码的核心错误在于使用get_post_meta()获取商品全局元数据——WC Kalkulator生成的自定义重量、尺寸是针对单个购物车项的用户输入计算结果,并非存储在商品的全局post_meta中,因此用固定商品ID调用get_post_meta()只能拿到统一的静态值,无法实现购物车项的个性化属性更新。

解决方案

正确的做法是从购物车项的专属数据中提取WC Kalkulator的计算结果,以下是修正后的代码:

add_action( 'woocommerce_before_calculate_totals', 'update_cart_item_dimensions_weight_from_wck', 10, 1 );
function update_cart_item_dimensions_weight_from_wck( $cart ) {
    // 防止钩子递归调用
    if ( doing_action( 'woocommerce_before_calculate_totals' ) ) {
        return;
    }

    foreach ( $cart->get_cart() as $cart_item ) {
        // 仅处理目标商品ID
        if ( $cart_item['product_id'] !== 4692 ) {
            continue;
        }

        // 读取WC Kalkulator存储在购物车项中的计算数据
        if ( isset( $cart_item['wck_calculations'] ) && is_array( $cart_item['wck_calculations'] ) ) {
            $wck_data = $cart_item['wck_calculations'];
            
            // 提取计算值,若不存在则沿用商品默认值
            $weight = isset( $wck_data['wck_weight'] ) ? $wck_data['wck_weight'] : $cart_item['data']->get_weight();
            $length = isset( $wck_data['wck_length'] ) ? $wck_data['wck_length'] : $cart_item['data']->get_length();
            $width = isset( $wck_data['wck_width'] ) ? $wck_data['wck_width'] : $cart_item['data']->get_width();
            $height = isset( $wck_data['wck_height'] ) ? $wck_data['wck_height'] : $cart_item['data']->get_height();

            // 更新当前购物车项的属性
            $cart_item['data']->set_weight( $weight );
            $cart_item['data']->set_length( $length );
            $cart_item['data']->set_width( $width );
            $cart_item['data']->set_height( $height );
        }
    }
}
关键说明
  • WC Kalkulator会将用户输入后的个性化计算结果存储在购物车项的wck_calculations数组中,而非商品全局元数据,因此必须从当前购物车项的该字段取值。
  • 代码添加了递归防护,避免woocommerce_before_calculate_totals钩子触发循环调用问题。
  • 保留了默认值降级逻辑,若WC Kalkulator数据缺失,会自动沿用商品原有的静态重量/尺寸。
  • 请确保代码中的wck_weight、wck_length等字段名,与你在WC Kalkulator插件中设置的计算字段标识完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:03:28