我有一个带有许多自定义字段的自定义帖子类型“参与者”。我也有一个带有相应输入字段的表单,供用户填写。当他提交表单时,我希望每个包含用户选择值的自定义字段都生成一个新帖子。

是否可以这样做,如果可以,怎么做?

#1 楼

使用wp_insert_post()和add_post_meta(),如下所示:

// insert the post and set the category
$post_id = wp_insert_post(array (
    'post_type' => 'your_post_type',
    'post_title' => $your_title,
    'post_content' => $your_content,
    'post_status' => 'publish',
    'comment_status' => 'closed',   // if you prefer
    'ping_status' => 'closed',      // if you prefer
));

if ($post_id) {
    // insert post meta
    add_post_meta($post_id, '_your_custom_1', $custom1);
    add_post_meta($post_id, '_your_custom_2', $custom2);
    add_post_meta($post_id, '_your_custom_3', $custom3);
}


评论


即使在WordPress 4.4.2上也可作为魅力使用:)!

–jave.web
16年4月11日在6:12

如今,您只需通过wp_insert_post中的meta_input键添加元文件:'meta_input'=> ['_your_custom_1'=> $ custom1,'_your_custom_2'=> custom2]

–安德烈亚斯(Andreas)
19年5月21日在11:08

@Andreas好点,我建议您将其添加为新答案,并让它开始获得投票。现在应该是答案。

– Webaware
19年5月21日在22:48

Thx @webaware :)

–安德烈亚斯(Andreas)
19年5月22日在23:58

即使在WordPress 5.1上也能发挥作用:)!

–我是最愚蠢的人
19年6月6日在4:43

#2 楼

除了上述@webaware的好答案之外,自wordpress 4.4.0起,所有这些都可以通过wp_insert_post调用来处理:

 $post_id = wp_insert_post(array (
    'post_content' => $content,
    'post_title' => $title,
    'post_type' => 'your_custom_post_type',
    'post_status' => 'publish',

    // some simple key / value array
    'meta_input' => array(
        'your_custom_key1' => 'your_custom_value1',
        'your_custom_key2' => 'your_custom_value2'
        // and so on ;)
    )
));

if ($post_id) {
    // it worked :)
}

 


#3 楼

使用Gravity Forms插件可以很容易地做到这一点。您可以构建一个在后端填充“自定义帖子类型”的表单。该帖子可以设置为草稿或已发布。添加自定义字段没有问题。就我而言,我用它来收集客户推荐。

评论


我喜欢这种解决方案,尤其是当您将其交付给想要自己管理表单的客户时。

– Webaware
2012-12-26 23:42