You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求助:无法将Contact Form 7已保存附件URL添加至Flamingo收件消息

解决方案:将WordPress附件URL添加到Flamingo收件消息

我来帮你搞定这个问题——要让Flamingo显示你保存的附件URL,核心是在CF7提交流程中,把附件URL追加到提交数据里,这样Flamingo就能自动捕获并展示这些信息了。下面是具体的实现步骤和代码:

关键思路

Flamingo是基于Contact Form 7的提交数据来保存消息的,所以我们需要在邮件发送前修改提交数据,把生成的附件URL插入进去,之后Flamingo就会把这些URL包含到它存储的消息中。

完整代码实现

把下面的代码添加到你的主题functions.php文件里,或者使用自定义代码插件:

// 保存CF7表单数据并将附件URL添加到Flamingo消息
function cf7_save_attachments_and_update_flamingo($WPCF7_ContactForm) {
    // 获取当前提交实例
    $submission = WPCF7_Submission::get_instance();
    if (!$submission) return;

    // 获取提交数据和上传的文件
    $posted_data = $submission->get_posted_data();
    $uploaded_files = $submission->uploaded_files();

    // 存储附件URL的数组
    $attachment_urls = [];

    // 处理表单中的文件字段(替换成你实际的字段名,比如'user-resume')
    $file_field_name = 'your-file-field';
    if (isset($uploaded_files[$file_field_name])) {
        $temp_file_path = $uploaded_files[$file_field_name];

        // 将临时文件保存为WordPress附件
        $attachment_id = media_handle_upload($file_field_name, 0);
        
        // 检查附件是否保存成功
        if (!is_wp_error($attachment_id)) {
            // 获取附件的永久URL
            $attachment_url = wp_get_attachment_url($attachment_id);
            $attachment_urls[] = $attachment_url;
        }
    }

    // 如果有附件URL,更新提交数据
    if (!empty($attachment_urls)) {
        // 把多个URL用换行分隔(也可以用逗号或其他分隔符)
        $posted_data['saved-attachment-urls'] = implode("\n", $attachment_urls);
        
        // 更新提交数据,让Flamingo捕获这个字段
        $submission->set_posted_data($posted_data);
    }
}
// 挂钩到CF7发送邮件前的动作
add_action('wpcf7_before_send_mail', 'cf7_save_attachments_and_update_flamingo');

配置说明

  • 替换字段名:把代码中的your-file-field替换成你CF7表单里的文件字段的名称(比如你表单里的字段是[file resume],这里就填resume)。
  • 多文件处理:如果表单有多个文件字段,复制处理单个字段的代码块,修改对应的字段名即可。
  • 在CF7邮件中显示:如果你想在CF7发送的邮件里也显示这些URL,可以在邮件模板中添加[saved-attachment-urls]标签。

验证效果

提交表单后,你可以:

  • 检查WordPress媒体库,确认附件已经成功上传。
  • 打开Flamingo的收件箱,查看对应的消息详情,你会看到新增的saved-attachment-urls字段,里面包含了附件的URL。

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

火山引擎 最新活动