Прибавьте 0,00 € к этикетке доставки, когда стоимость равна нулю в уведомлениях о заказе Woocommerce - PullRequest
0 голосов
/ 28 января 2019

У меня проблема в WooCommerce, когда стоимость доставки составляет 0,00 евро от определенной суммы. Вопрос в том, что страница корзины не отображается как 0,00 евро или бесплатно.

Это можно решить, введя этот код в полеФайл функций php.Я видел это в этом сообщении .

add_filter( 'woocommerce_cart_shipping_method_full_label', 'add_free_shipping_label', 10, 2 );
function add_free_shipping_label( $label, $method ) {
    if ( $method->cost == 0 ) {
        $label = 'Free shipping'; //not quite elegant hard coded string
    }
    return $label;
}

Существует также другой вариант, если вы хотите, чтобы появилось 0,00 евро. Я обнаружил это в следующей статье .

function my_custom_show_price_with_free_shipping( $label, $method ) {

    $label = $method->get_label();

    if ( WC()->cart->tax_display_cart == 'excl' ) {
        $label .= ': ' . wc_price( $method->cost );
        if ( $method->get_shipping_tax() > 0 && wc_prices_include_tax() ) {
            $label .= ' <small class="tax_label">' . WC()->countries->ex_tax_or_vat() . '</small>';
        }
    } else {
        $label .= ': ' . wc_price( $method->cost + $method->get_shipping_tax() );
        if ( $method->get_shipping_tax() > 0 && ! wc_prices_include_tax() ) {
            $label .= ' <small class="tax_label">' . WC()->countries->inc_tax_or_vat() . '</small>';
        }
    }

    return $label;
}
add_filter( 'woocommerce_cart_shipping_method_full_label', 'my_custom_show_price_with_free_shipping', 10, 2 );

Вопрос в том, что в уведомлениях, которые клиент получает по электронной почте о своей покупке, и в счетах в отправляющей части он не делаетставь что угодно.Столько, сколько я исследовал, я ничего не нашел.

Я искал, но я ничего не нашел.Вы можете мне помочь с этим?

Спасибо

1 Ответ

0 голосов
/ 29 января 2019

Для заказов, уведомлений по электронной почте (и, возможно, PDF) , вы будете использовать что-то вроде:

add_filter( 'woocommerce_order_shipping_method', 'custom_order_shipping_method_labels', 10, 2 );
function custom_order_shipping_method_labels( $labels, $order ) {
    $total = 0;
    foreach ( $order->get_items('shipping') as $item ) {
        $total += $item->get_total();
    }
    if( $total == 0 ){
        $labels .= ' ' . wc_price( 0 );
    }
    return $labels;
}

Код помещается в файл function.php вашей активной дочерней темы (или активнойтема).Протестировано и работает.

enter image description here

Помните, что в некоторых случаях заказ может иметь несколько способов доставки ...

...