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

Contact Form 7如何实现字段特定数字校验的简易验证码功能

这个功能完全可以通过Contact Form 7(CF7)原生的文本字段或数字字段实现,不需要额外安装第三方验证码插件,通过CF7自带的验证钩子就能完成自定义校验,具体实现步骤如下:

步骤1:在CF7表单中添加验证字段

你可以根据答案类型选择字段:如果答案是数字优先用数字字段(会自动拦截非数字格式的无效输入),如果是文本答案用普通文本字段即可。
以「狗有多少条腿?」的验证场景为例,在CF7表单编辑区插入如下字段代码:

<label>狗有多少条腿?
[number dog-leg-captcha]</label>

注意dog-leg-captcha是这个字段的自定义名称,后续校验逻辑需要匹配这个名称,不要和表单内其他字段重名。如果需要设置为必填项,把[number dog-leg-captcha]改成[number* dog-leg-captcha]即可。

步骤2:添加自定义校验规则

将下面的代码添加到当前使用主题的functions.php文件中(优先放在子主题的functions.php里,避免主题更新覆盖代码):

// 数字字段校验钩子
add_filter('wpcf7_validate_number', 'custom_simple_captcha_check', 10, 2);
add_filter('wpcf7_validate_number*', 'custom_simple_captcha_check', 10, 2);
// 如果使用文本字段,注释掉上面两行,启用下面两行钩子即可
// add_filter('wpcf7_validate_text', 'custom_simple_captcha_check', 10, 2);
// add_filter('wpcf7_validate_text*', 'custom_simple_captcha_check', 10, 2);

function custom_simple_captcha_check($result, $tag) {
    // 配置项:按需修改下面三个参数即可
    $captcha_field_name = 'dog-leg-captcha'; // 你刚才设置的字段名称
    $correct_answer = '4'; // 验证问题的正确答案
    $error_tip = '抱歉,答案错误'; // 校验失败的提示文案

    $tag = new WPCF7_FormTag($tag);
    if ($tag->name === $captcha_field_name) {
        $user_input = isset($_POST[$captcha_field_name]) ? trim($_POST[$captcha_field_name]) : '';
        if ($user_input !== $correct_answer) {
            $result->invalidate($tag, $error_tip);
        }
    }
    return $result;
}
步骤3:效果验证

保存代码后清空站点缓存,前台提交表单测试:输入非4的内容提交时,会自动在该字段下方展示你设置的「抱歉,答案错误」提示;输入正确答案4时可以正常提交表单,符合你的需求。

调整说明
  • 更换验证问题时,只需要修改表单内的问题文案、代码里的字段名、正确答案三个配置项即可,比如换成文字类问题「中国的全称是什么?」,就把字段换成文本字段,启用文本字段对应的钩子,正确答案填'中华人民共和国'即可。
  • 代码里已经对用户输入做了首尾空格清除处理,避免用户不小心输入前后空格导致正确答案被误判。
  • 不要用过于简单的固定问题长期不更换,否则简易验证码容易被垃圾程序批量识别绕过,可以定期更换问题和答案提升拦截效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:06:31