Formato correcto de post_date para wp_insert_post
¿Cuál es la forma correcta de definir la fecha de publicación cuando se envía una entrada desde el frontend usando wp_insert_post (Trac)?
Mi fragmento de código actualmente está publicando con el tiempo de MySQL...
if (isset ($_POST['date'])) {
$postdate = $_POST['Y-m-d'];
}
else {
$postdate = $_POST['2011-12-21'];
}
// AÑADIR LA ENTRADA DEL FORMULARIO AL ARRAY $new_post
$new_post = array(
'post_title' => $title,
'post_content' => $description,
'post_date' => $postdate,
'post_status' => 'publish',
'post_parent' => $parent_id,
'post_author' => get_current_user_id(),
);
//GUARDAR LA ENTRADA
$pid = wp_insert_post($new_post);

Si no agregas un post_date, WordPress lo completará automáticamente con la fecha y hora actual.
Para establecer otra fecha y hora [ Y-m-d H:i:s ]
es la estructura correcta. Un ejemplo a continuación con tu código.
$postdate = '2010-02-23 18:57:33';
$new_post = array(
'post_title' => $title,
'post_content' => $description,
'post_date' => $postdate,
'post_status' => 'publish',
'post_parent' => $parent_id,
'post_author' => get_current_user_id(),
);
//GUARDAR EL POST
$pid = wp_insert_post($new_post);

¡Gracias Rob! Agregar $postdate = date('2010-02-23 18:57:33');
hace que los campos de entrada dejen de funcionar, aunque quizás sea solo un error en Chrome...

Lo he probado yo mismo y funciona. Tal vez tu problema esté en otra parte de tu código.

Intenté usar ese formato de fecha, y está devolviendo Notice: A non well formed numeric value encountered in C:\xampp\htdocs\wordpress\wp-includes\functions.php on line 4028

para convertir tu fecha al formato de Wordpress (MySQL DATETIME), prueba esto:
$date_string = "Sept 11, 2001"; // o cualquier cadena como "20110911" o "2011-09-11"
// devuelve: string(13) "Sept 11, 2001"
$date_stamp = strtotime($date_string);
// devuelve: int(1000166400)
$postdate = date("Y-m-d H:i:s", $date_stamp);
// devuelve: string(19) "2001-09-11 00:00:00"
$new_post = array(
// tus otros argumentos
'post_date' => $postdate
);
$pid = wp_insert_post($new_post);
o por supuesto si quieres hacerlo realmente elegante haz esto:
'post_date' => date("Y-m-d H:i:s", strtotime("Sept 11, 2001"))

No puedes formatear el $_POST['date']
así... Tendrás que pasar el valor de $_POST['date']
por algo como $postdate = date( $_POST['date'] )
... También existe la posibilidad de llamar a get_option para obtener la configuración del blog. Consulta la Referencia de Opciones en el Codex.

Para la comunidad, aquí está mi código final funcionando:
encabezado
$year = $_REQUEST['year'];
$month = $_REQUEST['month'];
$day = $_REQUEST['day'];
$postdate = $year . "-" . $month . "-" . $day . " 08:00:00";
$new_post = array(
'post_title' => $title, // Título del post
'post_content' => $description, // Contenido del post
'post_status' => 'publish', // Estado: publicado
'post_author' => get_current_user_id(), // ID del autor actual
'post_date' => $postdate // Fecha de publicación
);
