Woocommerce" No Shipping methods"消息:根据Zipcode客户自定义消息输入

时间:2016-08-18 11:15:12

标签: woocommerce hook-woocommerce

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

  • 客户在城市内输入邮政编码,允许在线订单。没有 改变当前的行为。
  • 客户输入的邮政编码 允许电话订单,显示询问的定制信息 客户拨打电话。
  • 所有其他邮政编码,禁止订单。

非常感谢任何技术方向。

感谢。

1 个答案:

答案 0 :(得分:1)

下面的代码可以帮助您。将两个函数中的数组变量$ 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;
}