web-dev-qa-db-fra.com

Obtenir l'identifiant de post de wp_insert_post ()

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

Comment puis-je obtenir le post-id? Est-il généré automatiquement? Comment puis-je l'afficher avant que le formulaire ne soit posté? J'essaie de créer un formulaire frontal où je montre à l'utilisateur que l'identifiant de la publication va être créé. Comme "Hey mec, vous postez le n ° d’article # <?php echo $postID;?>". Y a-t-il un moyen ou je suis totalement hors de l'esprit? Merci d'avance.

1
Kleeia

Vous devrez le faire en deux étapes. Tout d'abord, vous allez créer une publication en mode brouillon à l'aide de wp_insert_post (). Le wp_insert_post lui-même vous renverra l'ID du message inséré:

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

Après cela, dans la page d'action, vous obtiendrez le brouillon d'ID et mettrez à jour le message. Vous utiliserez wp_update_post pour informer le brouillon 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);
?>

J'espère que ça aide :)

2
André Gumieri

Vérifiez la documentation :

Retour: (int | WP_Error) L'ID de publication en cas de succès. La valeur 0 ou WP_Error en cas d'erreur.

Ainsi:

$result = wp_insert_post( $data );

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