Formatarea corectă a post_date pentru wp_insert_post?
Care este modalitatea corectă de a defini data postării când se trimite un articol din frontend folosind wp_insert_post (Trac)?
Fragmentul meu de cod actual publică cu timpul MySQL...
if (isset ($_POST['date'])) {
$postdate = $_POST['Y-m-d'];
}
else {
$postdate = $_POST['2011-12-21'];
}
// ADAUGĂ INPUT-UL DIN FORMULAR ÎN ARRAY-UL $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(),
);
//SALVEAZĂ POSTAREA
$pid = wp_insert_post($new_post);

Dacă nu adaugi un post_date, WordPress îl va completa automat cu data și ora curentă.
Pentru a seta o altă dată și oră, structura corectă este [ Y-m-d H:i:s ]
. Mai jos este un exemplu cu codul tău.
$postdate = '2010-02-23 18:57:33';
$new_post = array(
'post_title' => $title, // Titlul postării
'post_content' => $description, // Conținutul postării
'post_date' => $postdate, // Data și ora postării
'post_status' => 'publish', // Statusul postării
'post_parent' => $parent_id, // ID-ul părintelui
'post_author' => get_current_user_id(), // ID-ul autorului
);
// SALVEAZĂ POSTAREA
$pid = wp_insert_post($new_post);

Mulțumesc Rob! Adăugarea $postdate = date('2010-02-23 18:57:33');
face de fapt ca căsuțele de introducere să nu mai funcționeze, poate este doar o eroare în Chrome însă...

Am încercat eu însumi și funcționează. Poate problema ta este în altă parte din codul tău.

Am încercat să folosesc acel format de dată și returnează Notice: A non well formed numeric value encountered in C:\xampp\htdocs\wordpress\wp-includes\functions.php on line 4028

pentru a converti data în formatul Wordpress (MySQL DATETIME), încearcă asta:
$date_string = "Sept 11, 2001"; // sau orice alt șir ca "20110911" sau "2011-09-11"
// returnează: string(13) "Sept 11, 2001"
$date_stamp = strtotime($date_string);
// returnează: int(1000166400)
$postdate = date("Y-m-d H:i:s", $date_stamp);
// returnează: string(19) "2001-09-11 00:00:00"
$new_post = array(
// alte argumente ale tale
'post_date' => $postdate
);
$pid = wp_insert_post($new_post);
sau dacă chiar vrei să fii șmecher, poți face direct așa:
'post_date' => date("Y-m-d H:i:s", strtotime("Sept 11, 2001"))

Pentru comunitate, iată codul meu final funcțional:
antet
$year = $_REQUEST['year'];
$month = $_REQUEST['month'];
$day = $_REQUEST['day'];
$postdate = $year . "-" . $month . "-" . $day . " 08:00:00";
$new_post = array(
'post_title' => $title, // Titlul postării
'post_content' => $description, // Conținutul postării
'post_status' => 'publish', // Statusul postării
'post_author' => get_current_user_id(), // ID-ul autorului
'post_date' => $postdate // Data postării
);
