Obtener el ID de post desde wp_insert_post()
$new_post = array(
'post_title' => $title,
'post_content' => $description,
'post_category' => array($_POST['cat']), // También funciona para taxonomías personalizadas
'tags_input' => array($tags),
'post_status' => 'publish', // Opciones: publish, preview, future, draft, etc.
'post_type' => 'my_custom_type'
);
wp_insert_post($new_post);
¿Cómo puedo obtener el ID del post? ¿Se genera automáticamente? ¿Cómo puedo mostrarlo antes de que se publique el formulario? Estoy intentando crear un formulario en el frontend donde muestre al usuario el ID del post que se va a crear. Algo como "Oye, estás publicando el artículo número # <?php echo $postID;?>
".
¿Existe alguna forma de hacer esto o estoy completamente equivocado? Gracias de antemano.
Tendrás que hacer esto en dos pasos. Primero, crearás una publicación en modo borrador, usando wp_insert_post(). La función wp_insert_post te devolverá el ID de la publicación insertada:
<?php
$new_post = array(
'post_title' => 'Título del borrador',
'post_status' => 'draft'
'post_type' => 'my_custom_type'
);
$postId = wp_insert_post($new_post);
?>
<form method="post" action="your-action.php">
<p>¡Hola! Estás creando la publicación #<?php echo $postId; ?></p>
<input type="hidden" name="draft_id" value="<?php echo $postId; ?>">
...
</form>
Después de eso, en la página de acción, obtendrás el ID del borrador y actualizarás la publicación. Usarás wp_update_post indicando el ID del borrador.
<?php
$draftId = $_POST['draft_id'];
...
$updated_post = array(
'ID' => $draftId,
'post_title' => $title,
...
'post_status' => 'publish', // Ahora es pública
'post_type' => 'my_custom_type'
);
wp_update_post($updated_post);
?>
Espero que te ayude :)

Consulta la documentación:
Retorno: (int|WP_Error) El ID del post en caso de éxito. El valor 0 o WP_Error en caso de fallo.
Por lo tanto:
$result = wp_insert_post( $data );
if ( $result && ! is_wp_error( $result ) ) {
$post_id = $result;
// Haz algo más
}
