Ottenere l'ID del post da wp_insert_post()
$new_post = array(
'post_title' => $title,
'post_content' => $description,
'post_category' => array($_POST['cat']), // Utilizzabile anche per tassonomie personalizzate
'tags_input' => array($tags),
'post_status' => 'publish', // Scegli: publish, preview, future, draft, ecc.
'post_type' => 'my_custom_type'
);
wp_insert_post($new_post);
Come posso ottenere l'ID del post? Viene generato automaticamente? Come posso mostrarlo prima che il form venga inviato? Sto cercando di creare un form frontend dove mostrare all'utente l'ID del post che verrà creato. Tipo "Ehi, stai per pubblicare l'articolo nr # <?php echo $postID;?>
".
Esiste un modo o sto completamente sbagliando approccio? Grazie in anticipo.

Dovrai eseguire questa operazione in due passaggi. Prima, creerai un articolo in modalità bozza, utilizzando wp_insert_post(). La funzione wp_insert_post stessa ti restituirà l'ID dell'articolo inserito:
<?php
$new_post = array(
'post_title' => 'Titolo della bozza',
'post_status' => 'draft'
'post_type' => 'my_custom_type'
);
$postId = wp_insert_post($new_post);
?>
<form method="post" action="your-action.php">
<p>Ehi! Stai creando l'articolo #<?php echo $postId; ?></p>
<input type="hidden" name="draft_id" value="<?php echo $postId; ?>">
...
</form>
Successivamente, nella pagina di azione, otterrai l'ID della bozza e aggiornerai l'articolo. Utilizzerai wp_update_post specificando l'ID della bozza.
<?php
$draftId = $_POST['draft_id'];
...
$updated_post = array(
'ID' => $draftId,
'post_title' => $title,
...
'post_status' => 'publish', // Ora è pubblico
'post_type' => 'my_custom_type'
);
wp_update_post($updated_post);
?>
Spero sia utile :)

Consulta la documentazione:
Ritorno: (int|WP_Error) L'ID del post in caso di successo. Il valore 0 o WP_Error in caso di errore.
Quindi:
$result = wp_insert_post( $data );
if ( $result && ! is_wp_error( $result ) ) {
$post_id = $result;
// Fai qualcos'altro
}
