Woocommerce "No Shipping methods" 消息:根据客户输入的邮政编码自定义消息

Woocommerce "No Shipping methods" message: Customise message based on the Zipcode customer enters

我们的商店已设置为仅处理悉尼市内的订单。我们在 Woocommerce 中通过为统一费率交付设置允许的邮政编码来管理这一点。 我们现在将送货范围扩大到其他地区,但只能通过电话(这些新邮政编码没有在线订单)。 Woocommerce 显示标准的无送货消息,但我们会自定义

任何技术方向将不胜感激。

谢谢。

下面的代码应该能帮到你。将两个函数中的数组变量 $zip_array 的值更改为逗号分隔的邮政编码列表,您希望显示自定义消息。此外,将 $custom_msg 的字符串值更改为您的自定义消息。更多详情请参考this article.

// For Cart Page.
add_filter( 'woocommerce_no_shipping_available_html', 'wf_customize_default_message', 10, 1 );
// For Checkout page
add_filter( 'woocommerce_cart_no_shipping_available_html', 'wf_customize_default_message', 10, 1 );
function wf_customize_default_message( $default_msg ) {
    $zip_array = array(
        '30031',
    );

    if ( in_array( WC()->customer->get_shipping_postcode() , $zip_array) ) {
        $custom_msg = "Call us for quotation - 1-800-XXX-XXXX";
        if( empty( $custom_msg ) ) {
          return $default_msg;
        }
        return $custom_msg;
    }

    return $default_msg;
}

add_filter('woocommerce_package_rates', 'wf_remove_shipping_options_for_particular_zip_codes', 8, 2);
function wf_remove_shipping_options_for_particular_zip_codes($rates, $package)
{
    global $woocommerce;
    $zip_array = array(
        '30031',
    );
    if ( in_array( $woocommerce->customer->get_shipping_postcode() , $zip_array) ) {
        $rates = array();
    }

    return $rates;
}