如何根据购物车金额修改WooCommerce自提配送方式标题?
解决方案:为符合条件的自提配送方式添加折扣标识
你可以通过WooCommerce提供的woocommerce_shipping_method_title过滤器修改自提配送方式的标题,同时复用现有代码的判断逻辑,确保只有折扣规则生效时才添加“5% discount”字样。
以下是整合后的完整代码(保留原有折扣功能,新增标题修改逻辑):
// 原有的自提折扣功能 function local_pickup_discount( $cart ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; $chosen_methods = WC()->session->get( 'chosen_shipping_methods' ); $carrito_total = WC()->cart->get_cart_contents_total(); $chosen_shipping_no_ajax = $chosen_methods[0]; if ( 0 === strpos( $chosen_shipping_no_ajax, 'local_pickup' ) && $carrito_total < 60000) { $discount = $cart->subtotal * 0.05; $cart->add_fee( __( 'Descuento por retiro en sucursal', 'yourtext-domain' ) , -$discount ); } } add_action( 'woocommerce_cart_calculate_fees', 'local_pickup_discount'); // 新增:修改自提配送方式标题 function modify_local_pickup_title( $title, $method ) { // 仅处理自提配送方式 if ( strpos( $method->id, 'local_pickup' ) === false ) { return $title; } // 获取当前选中的配送方式和购物车总额 $chosen_methods = WC()->session->get( 'chosen_shipping_methods' ); $carrito_total = WC()->cart->get_cart_contents_total(); // 匹配折扣生效条件:选中自提且购物车总额小于60000 if ( ! empty( $chosen_methods ) && 0 === strpos( $chosen_methods[0], 'local_pickup' ) && $carrito_total < 60000 ) { $title .= ' (5% discount)'; } return $title; } add_filter( 'woocommerce_shipping_method_title', 'modify_local_pickup_title', 10, 2 );
代码说明:
- 原有折扣函数优化:添加
is_admin() && ! defined( 'DOING_AJAX' )判断,避免后台不必要的执行,提升性能。 - 标题修改逻辑:
- 先判断当前处理的是否为自提配送方式,不是则直接返回原标题。
- 复用原有条件判断(选中自提+购物车总额<60000),符合条件时给标题追加“(5% discount)”。
- 通过
woocommerce_shipping_method_title过滤器,确保在购物车、结算页等所有显示配送方式的地方生效。
使用方法:
将上述代码添加到当前WordPress主题的functions.php文件末尾,或者使用自定义代码插件(如Code Snippets)添加即可。
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

