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

WooCommerce:获取选中配送方式成本及代码乘法无输出问题咨询

WooCommerce配送成本相关问题解答

1. 获取WooCommerce中已选中配送方式的成本

要拿到用户选中的配送方式成本,你可以借助WooCommerce的会话数据和配送费率对象来实现,具体操作如下:

  • 先获取用户选中的配送方式ID:
    $chosen_methods = WC()->session->get('chosen_shipping_methods');
    
  • 接着从当前包裹的配送费率集合里匹配对应的对象,提取成本:
    if ( ! empty( $chosen_methods ) ) {
        $chosen_method = reset( $chosen_methods );
        $shipping_packages = WC()->shipping()->get_packages();
        
        foreach ( $shipping_packages as $package ) {
            foreach ( $package['rates'] as $rate_id => $rate ) {
                if ( $rate_id === $chosen_method ) {
                    $selected_shipping_cost = $rate->cost;
                    break;
                }
            }
        }
    }
    

这样$selected_shipping_cost就是纯数值类型的配送成本了。

2. 关于乘法运算无输出的问题

你写的$price = (wc_price($selectedShipping->cost)*1.15);之所以没输出,核心问题是**wc_price()返回的是带格式的HTML字符串**(比如包含货币符号、千分位分隔符甚至HTML标签),不是纯数字。用字符串和数字做乘法,PHP会尝试把字符串转成数字,但如果字符串里有非数字内容(比如$、€或者逗号),转换后大概率变成0或者直接报错,自然出不了正确结果。

正确的做法是先对原始成本数值做乘法,再用wc_price()格式化:

// 先算原始数值的1.15倍,再格式化输出
$price = wc_price( $selectedShipping->cost * 1.15 );

另外还要确认$selectedShipping是有效的WC_Shipping_Rate对象,如果这个对象没正确获取到,$selectedShipping->cost也会是无效值,导致运算失败。可以加个判断确保安全:

if ( isset( $selectedShipping->cost ) && is_numeric( $selectedShipping->cost ) ) {
    $price = wc_price( $selectedShipping->cost * 1.15 );
    echo $price; // 别忘了输出才能看到结果哦
} else {
    echo '未获取到有效的配送成本';
}

内容的提问来源于stack exchange,提问作者Jonny B'Good

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:50:54