在Woocommerce中启用免费送货时更改显示的免费送货标签

时间:2018-09-03 15:07:22

标签: php wordpress woocommerce cart shipping-method

当优惠券触发“免费送货”时,我正在使用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 );

例如类似于以下示例:

enter image description here

1 个答案:

答案 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文件中。经过测试并可以正常工作。

enter image description here


2)使用设置-重命名“免费送货”标签方法:

enter image description here