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

使用WP User Frontend动作钩子,基于原文章标题创建另一自定义文章

解决方案

看起来你已经找对了核心思路,只需要补全代码并修正几个细节就能实现需求。下面是完整的可运行代码,我会逐部分给你解释:

// 优先使用WP User Frontend官方提交后钩子(如果你的自定义`create_whiteboard_hook`已正确触发,也可以保留原钩子)
add_action('wpuf_after_insert_post', 'create_whiteboard', 10, 3);

function create_whiteboard( $form_id, $post_id, $form_settings ) {
    // 获取原文章对象,避免直接覆盖传入的$post_id变量
    $original_post = get_post($post_id);
    if ( !$original_post ) {
        return; // 原文章不存在的话直接退出,防止报错
    }

    // 准备次级文章的创建参数
    $whiteboard_args = array(
        'post_type'     => 'whiteboard', // 你的次级自定义文章类型
        'post_title'    => $original_post->post_title, // 直接沿用原文章标题
        'post_status'   => 'publish', // 按需调整状态,比如改成'draft'就是草稿
        'post_author'   => $original_post->post_author, // 沿用原文章作者
        'post_content'  => '' // 如果需要复制原文章内容,这里可以改成$original_post->post_content
    );

    // 插入次级文章,用新变量存储ID避免冲突
    $new_whiteboard_id = wp_insert_post($whiteboard_args);

    // 可选操作:给两篇文章添加关联标记,方便后续管理
    if ( $new_whiteboard_id ) {
        add_post_meta($new_whiteboard_id, 'linked_original_post', $post_id);
        add_post_meta($post_id, 'linked_whiteboard_post', $new_whiteboard_id);
    }
}

关键细节说明:

  • 钩子选择:我用了WP User Frontend官方提供的wpuf_after_insert_post钩子,它会在表单提交成功创建原文章后自动触发,比自定义钩子更稳定。如果你的create_whiteboard_hook已经绑定到插件的提交流程,也可以保留原钩子不变。
  • 变量安全:特意用$new_whiteboard_id存储新文章的ID,避免覆盖函数参数里的原文章$post_id,防止后续逻辑出错。
  • 标题获取:通过get_post($post_id)拿到完整的原文章对象,再提取post_title,确保能准确获取到标题内容。
  • 可选关联:添加自定义字段可以让两篇文章建立关联,方便你后续在后台或前端快速找到对应的文章。

测试注意事项:

  1. 确认你的次级自定义文章类型whiteboard已经正确注册到WordPress中。
  2. 提交测试文章后,去后台的whiteboard文章列表检查是否生成了对应标题的新文章。
  3. 如果需要复制原文章的内容或其他字段,直接在$whiteboard_args里补充对应参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:06:00