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

WordPress-Contact Form 7发送前修改复选框提交文本求助

解决Contact Form 7复选框邮件文本替换问题

嘿,我来帮你搞定这个困扰!你之前试隐藏字段失败,大概率是没处理「未勾选时不输出内容」的逻辑对吧?试试下面两种亲测有效的方法:

方法一:用动态文本字段(无需写代码)

这个方法适合不想碰代码的同学,先装个Contact Form 7的动态文本扩展(插件商店直接搜就能找到):

  • 第一步:表单里保留原复选框:
    [checkbox my-checkbox "Test"]
  • 第二步:添加动态文本字段,设置成只有复选框勾选时才生成替换内容:
    [dynamic_text my-checkbox-replacement "CF7_get_post_var key='my-checkbox' before='11:30 Tested'"]
    逻辑很简单:当my-checkbox被勾选时,这个动态字段会输出你要的「11:30 Tested」;没勾选的话字段为空,不会在邮件里占位置。
  • 第三步:去邮件模板里,把原来的[my-checkbox]换成[my-checkbox-replacement]就行。

方法二:用PHP钩子(灵活定制)

如果需要更复杂的逻辑,或者不想装额外插件,直接在主题的functions.php里加这段代码:

add_filter( 'wpcf7_mail_tag_replaced', 'custom_replace_checkbox_email_text', 10, 3 );
function custom_replace_checkbox_email_text( $replaced_content, $tag, $submitted_data ) {
    // 替换成你表单里的复选框标签名
    if ( 'my-checkbox' !== $tag->name ) {
        return $replaced_content;
    }

    // 检查是否勾选了目标选项
    if ( isset( $submitted_data[$tag->name] ) && in_array( 'Test', $submitted_data[$tag->name] ) ) {
        $replaced_content = '11:30 Tested';
    } else {
        // 未勾选时清空内容,避免邮件里出现多余文本
        $replaced_content = '';
    }

    return $replaced_content;
}
  • 这段代码会拦截邮件标签的替换过程:当检测到你的复选框标签时,判断是否勾选了「Test」,是就替换成你要的文本,否则返回空。
  • 记得把代码里的my-checkbox改成你实际的复选框标签名,Test换成复选框显示的文本,11:30 Tested改成你想发送的内容。

注意事项

  • 两种方法都要确保邮件模板里调用的是正确的标签:方法一是动态文本的标签,方法二还是原复选框标签(钩子会自动替换)。
  • 测试的时候一定要勾选和不勾选都试一遍,确认未勾选时邮件里不会出现多余内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:05:51