从wp_INSERT_POST()获取文章ID

时间:2016-04-20 作者:Kleeia

$new_post = array(
                        \'post_title\'    =>      $title,
                        \'post_content\'  =>      $description,
                        \'post_category\' =>      array($_POST[\'cat\']),  // Usable for custom taxonomies too
                        \'tags_input\'    =>      array($tags),
                        \'post_status\'   =>      \'publish\',           // Choose: publish, preview, future, draft, etc.
                        \'post_type\'     =>      \'my_custom_type\'
                );
wp_insert_post($new_post);
我怎样才能获得帖子id?是否自动生成?在发布表单之前,我如何显示它?我正在尝试创建一个前端表单,向用户显示要创建的帖子id。比如“嘿,伙计,你在发布第<?php echo $postID;?>“。有没有办法,或者我完全疯了?提前谢谢你。”。

2 个回复
最合适的回答,由SO网友:André Gumieri 整理而成

您必须分两步完成此操作。首先,您将使用wp\\u insert\\u post()在草稿模式下创建一篇文章。wp\\U insert\\U post本身将向您返回插入帖子的ID:

<?php
$new_post = array(
    \'post_title\' => \'Draft title\',
    \'post_status\'   => \'draft\'
    \'post_type\'     =>      \'my_custom_type\'
);
$postId = wp_insert_post($new_post);
?>

<form method="post" action="your-action.php">
    <p>Hey! You are creating the post #<?php echo $postId; ?></p>
    <input type="hidden" name="draft_id" value="<?php echo $postId; ?>">
    ...
</form>
之后,在操作页面中,您将获得草稿id并更新帖子。您将使用wp\\u update\\u post通知草稿ID。

<?php
$draftId = $_POST[\'draft_id\'];
...

$updated_post = array(
    \'ID\'            =>      $draftId,
    \'post_title\'    =>      $title,
    ...
    \'post_status\'   =>      \'publish\', // Now it\'s public
    \'post_type\'     =>      \'my_custom_type\'
);
wp_update_post($updated_post);
?>
希望有帮助:)

SO网友:TheDeadMedic

检查documentation:

Return:(int | WP\\u Error)成功后的帖子ID。失败时的值0或WP\\U错误。

因此:

$result = wp_insert_post( $data );

if ( $result && ! is_wp_error( $result ) ) {
    $post_id = $result;
    // Do something else
}

相关推荐

使用WPForms提交表单时触发操作

我的一位客户使用WPForms插件创建前端表单。提交表单时,条目进入de数据库(在单独的表wp\\u wpform\\u entries或类似的表中,全部由插件处理)。但他们也希望以JSON格式将所有数据发布到另一个网站。是否有办法知道表单已提交,或者使用add_filter(\'wp_insert_post)?