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

如何获取Contact Form 7提交者不可修改用户名及在Flamingo中查看?

解决Contact Form 7获取不可修改提交者用户名的方案

一、借助Flamingo插件实现

Flamingo可自动关联登录用户的身份信息,无需保留表单里可修改的用户名字段,操作步骤如下:

  1. 删除表单中原有的[text* your-name default:user_login]字段,用户无需看到或编辑用户名。
  2. 在Contact Form 7的邮件模板里直接使用[user_login]标签,提交时会自动填充当前登录用户的用户名,且用户无法修改。
  3. 若要在Flamingo收件箱里单独显示该字段,可在表单的「附加设置」中添加代码:
    on_sent_ok: "wpcf7_add_posted_data('user_login', '" . wp_get_current_user()->user_login . "');"
    
    另外,Flamingo默认会在每条提交记录的「用户」栏显示登录用户的信息,不用额外设置也能直接查看提交者身份。

二、自定义代码方案(无需额外插件)

不想依赖Flamingo的话,可通过以下两种方式实现:

方法1:添加隐藏字段

移除原用户名字段,替换为隐藏字段,自动填充登录用户名且用户不可见:

[hidden your-username default:user_login]

之后在邮件模板里用[your-username]调用该字段即可。

方法2:通过PHP钩子注入

在主题的functions.php文件中添加以下代码,表单提交前自动把登录用户名写入提交数据:

add_action( 'wpcf7_before_send_mail', 'inject_login_username_to_cf7' );
function inject_login_username_to_cf7( $contact_form ) {
    if ( is_user_logged_in() ) {
        $submission = WPCF7_Submission::get_instance();
        if ( $submission ) {
            $current_user = wp_get_current_user();
            $posted_data = $submission->get_posted_data();
            $posted_data['user_login'] = $current_user->user_login;
            $submission->set_posted_data( $posted_data );
        }
    }
}

然后在CF7邮件模板里用[user_login]就能获取到不可修改的用户名。

额外提示

如果要求必须登录才能提交表单,可在CF7的「附加设置」里添加:

require:user-logged-in

避免未登录用户提交时出现用户名缺失的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:31:02