在 WooCommerce 结账页面验证电话号码长度和起始数字

问题描述 投票:0回答:1

我想向 WooCommerce 结账页面电话号码添加自定义验证:

  • 如果电话号码以“02”开头,长度最多应为 9 位数字
  • 如果电话号码以“08”开头,长度最多应为 10 位数字

这是我到目前为止所拥有的代码:

add_action('woocommerce_checkout_process', 'njengah_custom_checkout_field_process');

function njengah_custom_checkout_field_process() {
    global $woocommerce;

      // Check if set, if its not set add an error. This one is only requite for companies
    if ( ! (preg_match('/^[0-9]{10}$/D', $_POST['billing_phone'] ))){
        wc_add_notice( "Incorrect Phone Number! Please enter valid 10 digits phone number"  ,'error' );
    }
}
php wordpress woocommerce
1个回答
0
投票

尝试以下(使用

strpos()
定位 2 位起始数字)

add_action('woocommerce_checkout_process', 'custom_checkout_field_process');
function custom_checkout_field_process() {
    if ( isset($_POST['billing_phone']) && ! empty($_POST['billing_phone']) ) {
        $phone = $_POST['billing_phone'];

        if ( strpos($phone,'02') === 0 && ! preg_match('/^[0-9]{9}$/D', $phone ) ) {
            wc_add_notice( 'Incorrect Phone Number! Please enter valid 9 digits phone number', 'error' );
        } 
        elseif ( strpos($phone,'08') === 0 && ! preg_match('/^[0-9]{10}$/D', $phone ) ) {
            wc_add_notice( 'Incorrect Phone Number! Please enter valid 10 digits phone number', 'error' );
        } 
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.