web-dev-qa-db-ja.com

Wp_insert_post()から投稿IDを取得する

$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を作成する予定のフロントエンドフォームを作成しようとしています。 「やあ、あなたは記事nr#<?php echo $postID;?>」を投稿しています。方法はありますか、それとも私はまったく気にしていませんか?前もって感謝します。

1
Kleeia

あなたは2つのステップでこれをしなければならないでしょう。まず、wp_insert_post()を使用してドラフトモードで投稿を作成します。 wp_insert_post自体が挿入された投稿のIDを返します。

<?php
$new_post = array(
    'post_title' => 'Draft title',
    'post_status'   => 'draft'
    'post_type'     =>      'my_custom_type'
);
$postId = wp_insert_post($new_draft_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を取得して投稿を更新します。ドラフトIDを通知するwp_update_postを使用します。

<?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);
?>

それが役に立てば幸い :)

2
André Gumieri

ドキュメント :を確認してください。

戻り値:(int | WP_Error)成功した​​場合の投稿ID。値0または失敗した場合はWP_Error.

したがって:

$result = wp_insert_post( $data );

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