WooCommerce中获取购物车配送标签、费用及订单配送费用的方法
解决WooCommerce购物车/订单配送信息显示问题
嘿,我来帮你搞定WooCommerce购物车显示完整配送信息的问题!你之前用的get_cart_shipping_total()确实只会返回纯费用数值,要显示你设置的完整标题(比如"Express delivery with UPS 24/48 hours")加上费用,得换个方式获取配送方法的详细信息。
一、购物车页面显示完整配送标题+费用
直接获取当前选中的配送方法,同时拿到标签和费用,代码如下:
// 先检查购物车是否有选中的配送方法 if ( WC()->cart->has_shipping_method() ) { // 获取所有选中的配送方法(通常购物车只会选一个) foreach ( WC()->cart->get_shipping_methods() as $shipping_method ) { // 输出配送标签(你设置的标题)和格式化后的费用 echo '<div class="cart-shipping-info">'; echo esc_html( $shipping_method->get_label() ) . ': ' . wc_price( $shipping_method->cost ); echo '</div>'; } }
这样就能输出你想要的完整内容:Express delivery with UPS 24/48 hours 4.90 euro
二、单独获取购物车的配送标签/费用
获取配送标签
如果只需要提取配送方法的标题(不带费用),可以这样写:
if ( WC()->cart->has_shipping_method() ) { $shipping_methods = WC()->cart->get_shipping_methods(); // 取第一个选中的配送方法(购物车一般只有一个) $selected_shipping = reset( $shipping_methods ); $shipping_label = $selected_shipping->get_label(); // 输出标签 echo esc_html( $shipping_label ); }
获取配送费用
- 原始数值(不带货币符号):
$selected_shipping->cost - 格式化后的价格(带货币符号和格式):
wc_price( $selected_shipping->cost ) - 所有配送费用总和(适合多配送方法场景):
WC()->cart->get_shipping_total()
三、获取订单的配送标签/费用
如果是处理已完成的订单(比如订单详情页、后台订单管理),需要先拿到$order对象,再获取配送信息:
获取订单配送标签
// 假设你已经有$order对象,比如通过订单ID获取:$order = wc_get_order( $order_id ); $shipping_items = $order->get_shipping_methods(); if ( ! empty( $shipping_items ) ) { $shipping_item = reset( $shipping_items ); // 订单里的配送标签用get_name()获取 $order_shipping_label = $shipping_item->get_name(); echo esc_html( $order_shipping_label ); }
获取订单配送费用
// 格式化后的配送费用(带货币) $order_shipping_total = wc_price( $order->get_shipping_total() ); echo $order_shipping_total; // 原始费用数值(不带货币) $order_shipping_raw = $order->get_shipping_total();
内容的提问来源于stack exchange,提问作者delfinoweb
相关产品推荐
相关产品推荐

