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

求助:Contact Form 7提交内容未自动生成WordPress文章

修复CF7提交生成WordPress文章的问题

你的代码存在几个关键问题,我给你修正并简化,同时保留了基础的错误防护逻辑:

原代码的问题点

  • 表单ID判断逻辑错误:$contact_form->id(11247) 写法不符合CF7的API规范,且未定义$my_form_id变量
  • 变量作用域漏洞:若$submission获取失败,$posted_data会未定义,导致后续代码直接报错终止
  • 日期格式不兼容:CF7日期字段默认仅返回YYYY-MM-DD格式,但wp_insert_post要求完整的YYYY-MM-DD HH:MM:SS格式

修正后的代码

function save_cf7_data_to_post($contact_form) {
    // 仅处理ID为11247的CF7表单
    if (11247 !== $contact_form->id()) {
        return;
    }

    $submission = WPCF7_Submission::get_instance();
    if (!$submission) {
        return;
    }

    $posted_data = $submission->get_posted_data();
    // 过滤空数据,避免生成无效文章
    if (empty($posted_data['text-410']) || empty($posted_data['textarea-420'])) {
        return;
    }

    // 整理文章参数,添加安全过滤
    $post_args = array(
        'post_type'      => 'post',
        'post_status'    => 'draft',
        'post_category'  => array(91), // 确保后台存在ID为91的分类
        'post_title'     => sanitize_text_field($posted_data['text-410']),
        'post_content'   => wp_kses_post($posted_data['textarea-420']),
        'post_date'      => !empty($posted_data['date']) ? $posted_data['date'] . ' 00:00:00' : current_time('mysql'),
    );

    // 插入文章,可打开注释调试
    $post_id = wp_insert_post($post_args);
    // 调试用:提交后直接显示结果,调试完成后注释掉
    // if (is_wp_error($post_id)) {
    //     wp_die('生成失败:' . $post_id->get_error_message());
    // } else {
    //     wp_die('文章已生成,ID:' . $post_id);
    // }
}
add_action('wpcf7_before_send_mail', 'save_cf7_data_to_post');

快速排查步骤

  1. 核对CF7表单字段的name属性,确保和代码里的text-410、textarea-420、date完全一致
  2. 确认后台存在ID为91的文章分类(鼠标悬停分类名称,地址栏的tag_ID即为分类ID)
  3. 若仍无生成,打开代码里的调试注释,提交表单后会直接显示错误原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:10:33