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

如何为MemberPress自定义身份证字段添加提交前自定义验证

为MemberPress注册表单添加身份证自定义字段验证

实现步骤

你可以通过MemberPress提供的专属表单验证钩子,结合自定义身份证校验函数来完成需求,确保仅作用于MemberPress的注册表单:

  1. 编写身份证验证函数
    先实现一个基础的身份证格式校验逻辑(可根据需求扩展,比如增加出生日期、地区码验证):

    // 身份证号码验证核心函数
    function validate_memberpress_id_card($id_card) {
        // 清除所有非数字字符,兼容带空格或符号的输入
        $id_card = preg_replace('/\D/', '', $id_card);
        
        // 验证18位身份证(含校验码)
        if(strlen($id_card) === 18) {
            $coefficients = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
            $check_codes = ['1','0','X','9','8','7','6','5','4','3','2'];
            $sum = 0;
            for($i=0; $i<17; $i++) {
                $sum += intval($id_card[$i]) * $coefficients[$i];
            }
            $mod = $sum % 11;
            return $check_codes[$mod] === strtoupper($id_card[17]);
        }
        // 兼容15位身份证(可选,根据业务需求保留)
        elseif(strlen($id_card) === 15) {
            return preg_match('/^\d{15}$/', $id_card);
        }
        return false;
    }
    
  2. 挂钩MemberPress注册表单验证
    使用mepr-validate-signup-form钩子(该钩子仅作用于MemberPress注册表单),在表单提交前触发验证:

    // 绑定MemberPress注册表单验证事件
    add_action('mepr-validate-signup-form', 'custom_memberpress_id_card_validation', 10, 1);
    function custom_memberpress_id_card_validation($form) {
        // 替换为你在MemberPress后台设置的身份证字段实际name值(可通过页面源码查看)
        $target_field_name = 'custom_id_card';
        $id_card_value = isset($_POST[$target_field_name]) ? trim($_POST[$target_field_name]) : '';
        
        // 验证不通过则标记字段无效并阻止提交
        if(empty($id_card_value) || !validate_memberpress_id_card($id_card_value)) {
            // 第一个参数为错误提示文本,第二个参数关联目标字段,自动标记为无效
            mepr_add_error('请输入有效的身份证号码', $target_field_name);
        }
    }
    

注意事项

  • 务必将custom_id_card替换为你在MemberPress后台创建的身份证自定义字段的真实name属性(可在注册表单页面右键查看源码找到)。
  • 身份证验证函数可根据业务需求扩展,比如增加出生日期合法性校验、地址码校验等。
  • mepr_add_error函数会自动阻止表单提交,并在对应字段下方显示错误提示,无需额外处理表单拦截逻辑。

内容的提问来源于stack exchange,提问作者Julio Corral

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:42:55