根据Woocommerce中发货国家/地区显示交货日期范围

时间:2019-03-21 18:30:58

标签: php wordpress woocommerce country shipping-method

在Woocommerce中,我试图在购物车和结帐页面上添加预计的交货天数范围。
我设置了两个运输区域:德国和其他欧洲国家(德国以外),称为“ DHL欧洲”。我需要为德国运输国家显示与其他欧洲运输国家不同的交货日期范围:

  • 德国装运国家/地区会显示“ Lieferzeit 3-5 Werktage”(不收取运费)。
  • 其他欧洲航运国家将显示“ Lieferzeit 5-7 奇怪”

我的代码尝试:

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_shippingflat_rate的运输方式,但不适用于(德国境外)的欧洲交货。

我在做什么错?
如何显示欧洲国家(德国以外) 的正确日期范围?

1 个答案:

答案 0 :(得分:1)

您实际上并不需要针对您的运送方式,而是针对客户运送国家/地区:

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文件上。经过测试,可以正常工作。