Отображение диапазона дней доставки в зависимости от страны доставки в Woocommerce - PullRequest
2 голосов
/ 21 марта 2019

В Woocommerce я пытаюсь добавить приблизительный диапазон дней доставки на страницах корзины и оформления заказа.
Я установил 2 зоны доставки: Германия и другие европейские страны (за пределами Германии) под названием "DHL Europe".Мне нужно отобразить другой диапазон дней доставки для страны отгрузки Германии, чем для других европейских стран отгрузки:

  • В стране отгрузки Германии будет отображаться "Lieferzeit 3-5 Werktage" (и когда нет стоимости доставки) .
  • В других европейских странах-перевозчиках будет отображаться "Lieferzeit 5-7 Werktage"

Моя попытка кода:

function sv_shipping_method_estimate_label( $label, $method ) {
    $label .= '<br /><small class="subtotal-tax">';
    switch ( $method->method_id ) {
        case 'flat_rate':
            $label .= 'Lieferzeit 3-5 Werktage';
            break;
        case 'free_shipping':
            $label .= 'Lieferzeit 3-5 Werktage';
            break;
        case 'international_delivery':
            $label .= 'Lieferzeit 5-7 Werktage';
    }

    $label .= '</small>';
    return $label;
}
add_filter( 'woocommerce_cart_shipping_method_full_label', 'sv_shipping_method_estimate_label', 10, 2 );

Работает сfree_shipping и flat_rate способы доставки, но не для европейских поставок (за пределами Германии) .

Что я делаю не так?
Как отобразить правильный диапазон дат для европейских стран (за пределами Германии) ?

1 Ответ

1 голос
/ 21 марта 2019

На самом деле вам не нужно указывать методы доставки, а вместо этого страну доставки клиента:

add_filter( 'woocommerce_cart_shipping_method_full_label', 'cart_shipping_method_full_label_filter', 10, 2 );
function cart_shipping_method_full_label_filter( $label, $method ) {
    // The targeted country code
    $targeted_country_code = 'DE';

    if( WC()->customer->get_shipping_country() !== $targeted_country_code ){
        $days_range = '5-7'; // International
    } else {
        $days_range = '3-5'; // Germany
    }
    return $label . '<br /><small class="subtotal-tax">' . sprintf( __("Lieferzeit %s Werktage"), $days_range ) . '</small>';
}

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

...