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

如何用Contact Form 7实现仅允许13岁及以上用户提交表单?

使用Contact Form 7实现13岁及以上用户提交限制的方法

当然可以!Contact Form 7完全能实现这个需求,我给你分享两种实用的方法,涵盖不同的输入场景,还会帮你考虑到安全性问题:

方法一:通过出生日期验证年龄(更准确,推荐)

这种方式让用户填写出生日期,我们通过计算来确认年龄是否达标,能避免用户虚报年龄:

  • 先在你的CF7表单中添加一个必填的出生日期字段:
    [date* birth-date id:birth-date]
    
  • 接下来添加服务器端验证逻辑(非常重要,因为前端验证可以被轻易绕过):打开你当前主题的functions.php文件,插入以下代码:
    add_filter( 'wpcf7_validate_date', 'custom_date_validation', 10, 2 );
    function custom_date_validation( $result, $tag ) {
        if ( 'birth-date' == $tag->name ) {
            $birth_date = $_POST['birth-date'];
            $today = date('Y-m-d');
            $age = date_diff(date_create($birth_date), date_create($today))->y;
            if ( $age < 13 ) {
                $result->invalidate( $tag, '您必须年满13岁才能提交此表单' );
            }
        }
        return $result;
    }
    
  • 这段代码会自动计算用户输入的出生日期对应的年龄,如果小于13岁,就会返回错误提示,直接阻止表单提交。你可以根据需要修改错误提示的文字。

方法二:直接输入年龄验证(更简单,适合快速实现)

如果你的场景允许用户直接输入年龄,可以用CF7内置的数字验证+服务器端兜底:

  • 在表单中添加必填的年龄输入字段,利用CF7内置的min规则做前端验证:
    [number* age min:13]
    
  • 同样,为了安全,加上服务器端验证,防止有人绕过前端限制,在functions.php中插入:
    add_filter( 'wpcf7_validate_number', 'custom_age_validation', 10, 2 );
    function custom_age_validation( $result, $tag ) {
        if ( 'age' == $tag->name ) {
            $age = intval($_POST['age']);
            if ( $age < 13 ) {
                $result->invalidate( $tag, '您必须年满13岁才能提交此表单' );
            }
        }
        return $result;
    }
    

小提示

不管用哪种方法,服务器端验证都是必须的,它能有效防止恶意用户绕过前端限制提交表单。另外,你可以根据网站的风格,调整错误提示文案,让它更贴合你的用户体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:14:07