首页 > 解决方案 > 在 WooCommerce 中结帐期间预定义的运输邮政编码验证

问题描述

我希望达到的目标

我正在尝试在结帐时添加一个控件,确保在选择“运送到另一个地址”时提供正确的邮政编码。

我的代码的问题

我正在使用的代码没有任何反应。没有消息,什么都没有。无论如何都可以下订单。

我的问题

我的代码有什么问题或错误/错误在哪里?

到目前为止我的代码

add_action( 'woocommerce_after_checkout_validation' , 'deny_outside_zone_message', 10, 2,);
function deny_outside_zone_message( $fields, $errors ) {

    // the accepted delivery zones
    $del_zones_array = array('30030', '30032', '30033');

    // check if the postal code (billing or shipping) if within the array
    if (! in_array('shipping_postcode', $del_zones_array ) ) {

    // if the postal is not within the array, deny checkout
    echo "The ZIP you provided is not available for oneline deliveries.";
    return;
    }
}

标签: phpwordpressvalidationwoocommercecheckout

解决方案


shipping_postcode未在您的代码中设置

// Validate
function action_woocommerce_after_checkout_validation( $data, $error ) {        
    // The accepted delivery zones
    $del_zones_array = array( 30030, 30032, 30033 );

    // If the postal is not within the array, deny checkout
    if( ! in_array( $data['shipping_postcode'], $del_zones_array ) ) {
        $error->add( 'validation', 'The ZIP you provided is not available for oneline deliveries.' );
    }
}
add_action('woocommerce_after_checkout_validation', 'action_woocommerce_after_checkout_validation', 10, 2 );

推荐阅读