在 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 validation woocommerce checkout
1个回答
0
投票

使用以下代码,如果输入的电话号码会抛出错误消息,避免结账:

  • 以“02”开头,如果数字长度不是9位,
  • 以“08”开头,如果数字长度不足10位,
  • 不以“02”或“08”开头
  • 不是数字

代码:

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

        // Number starting with "02" with more digits than 9
        if ( strpos($phone,'02') === 0 && is_numeric($phone) && $length > 9 ) {
            wc_add_notice( __('Incorrect Phone Number! Please enter valid 9 digits phone number', 'woocommerce'), 'error' );
        } 
        // Number starting with "08" with more digits than 10
        elseif ( strpos($phone,'08') === 0 && is_numeric($phone) && $length > 10 ) {
            wc_add_notice( __('Incorrect Phone Number! Please enter valid 10 digits phone number', 'woocommerce'), 'error' );
        } 
        // Optional: Number not starting with "02" or "08"
        elseif ( ! ( strpos($phone,'02') === 0 || strpos($phone,'08') === 0 ) ) {
            wc_add_notice( __('Incorrect Phone Number! Phone number must start with "02" or "08"', 'woocommerce'), 'error' );
        }
        // Optional: Not numerical input
        elseif ( ! is_numeric($phone)  ) {
            wc_add_notice( __('Incorrect Phone Number! Phone number only accept numbers', 'woocommerce'), 'error' );
        }
    }
}

代码位于子主题的functions.php 文件中(或插件中)。已测试并有效。

© www.soinside.com 2019 - 2024. All rights reserved.