Formato correcto de post_date para wp_insert_post

23 dic 2011, 00:55:29
Vistas: 59.5K
Votos: 16

¿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);
0
Todas las respuestas a la pregunta 5
4
30

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);
23 dic 2011 01:08:25
Comentarios

¡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...

MTT MTT
23 dic 2011 01:17:56

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

Rob Vermeer Rob Vermeer
23 dic 2011 01:28:50

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

Ari Ari
3 nov 2013 15:49:07

debería ser $postdate = '2010-02-23 18:57:33';, porque date() requiere un formato de fecha literal para procesar, no números. O $postdate = date('Y-m-d H:i:s', strtotime('2010-02-23 18:57:33'));

Alex K Alex K
13 ene 2014 10:32:48
1

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"))
19 ago 2013 17:22:54
Comentarios

Esto es muy útil para formatear una marca de tiempo Unix, específicamente el código date("Y-m-d H:i:s", $date_stamp).

David David
26 sept 2017 00:26:18
1

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.

23 dic 2011 13:03:00
Comentarios

Usar Date realmente rompió la publicación y devolvía un error 404. ¡Gracias a Kaiser por la orientación de todos modos!

MTT MTT
23 dic 2011 18:17:29
0

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
);
23 dic 2011 18:19:27
0

encontré esto a través de Google. Sé que es antiguo pero no hay una respuesta definitiva. El código de WordPress usa current_time( 'mysql' ) para guardar fecha/hora en la función wp_update_post! Esto generará el formato de fecha deseado.

24 feb 2020 11:24:36