当优惠券触发“免费送货”时,我正在使用this官方woocommerce摘录和摘录来隐藏其他送货方式。效果很好。
目前,它仅显示免费送货。我正在尝试在文本行中添加显示“免运费”的文字,以表示 “-£3.95” ,以便让用户知道自己已经节省了运费
我尝试在IF语句中添加一个内联的虚拟“费用”,但不会显示。
$cart->add_fee( 'You saved -£3.95');
代码如下:
function my_hide_shipping_when_free_is_available( $rates ) {
$free = array();
foreach ( $rates as $rate_id => $rate ) {
if ( 'free_shipping' === $rate->method_id ) {
$free[ $rate_id ] = $rate;
break;
}
}
return ! empty( $free ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'my_hide_shipping_when_free_is_available', 100 );
例如类似于以下示例:
答案 0 :(得分:1)
有2种方法:
1)在您现有的代码中 (最佳方式)-它将以格式保存的价格附加到免费送货上
add_filter( 'woocommerce_package_rates', 'hide_other_shipping_when_free_is_available', 100, 1 );
function hide_other_shipping_when_free_is_available( $rates ) {
// Here set your saved amount
$labeleld_price = -3.95;
$free = array();
foreach ( $rates as $rate_id => $rate ) {
if ( 'free_shipping' === $rate->method_id ) {
$free[ $rate_id ] = $rate;
// Here we append the labbelled saved price formated display
$free[ $rate_id ]->label .= ' (' . strip_tags( wc_price( $labeleld_price ) ) . ')';
break; // stop the loop
}
}
return ! empty( $free ) ? $free : $rates;
}
代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试并可以正常工作。
2)使用设置-重命名“免费送货”标签方法: