You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce结账页面手机号按开头数字自定义长度验证需求

WooCommerce结账页面手机号自定义验证规则实现

需求说明

需要为结账页面的手机号字段添加以下验证规则:

  • 以02开头的手机号,长度最多为9位
  • 以08开头的手机号,长度最多为10位

修改后的代码

替换你现有的代码为以下内容:

add_action('woocommerce_checkout_process', 'njengah_custom_checkout_field_process');

function njengah_custom_checkout_field_process() {
    // 先检查手机号字段是否存在且不为空
    if (isset($_POST['billing_phone']) && !empty($_POST['billing_phone'])) {
        $phone = sanitize_text_field($_POST['billing_phone']);
        
        // 验证规则:02开头最多9位 或 08开头最多10位
        $valid_pattern = '/^(02\d{0,7}|08\d{0,8})$/';
        
        if (!preg_match($valid_pattern, $phone)) {
            wc_add_notice('手机号格式错误:02开头请输入最多9位数字,08开头请输入最多10位数字', 'error');
        }
    }
}

代码说明

  1. 字段存在检查:先判断billing_phone字段是否存在且不为空,避免无输入时触发错误提示
  2. 正则规则解析:
    • 02\d{0,7}:匹配以02开头,后续跟0-7位数字(总长度2-9位)
    • 08\d{0,8}:匹配以08开头,后续跟0-8位数字(总长度2-10位)
    • |表示两种规则满足其一即可通过验证
  3. 输入过滤:用sanitize_text_field()处理输入内容,避免恶意字符干扰验证逻辑
  4. 明确错误提示:直接告知用户两种开头手机号的长度要求,降低用户理解成本

测试要点

  • 验证通过场景:021234567(9位)、0212345(7位)、0812345678(10位)、0812345(7位)
  • 验证失败场景:0212345678(10位)、08123456789(11位)、0312345678(非02/08开头)、包含字母/符号的手机号

内容的提问来源于stack exchange,提问作者web Editor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 17:56:21