Правильное форматирование post_date для wp_insert_post?
Как правильно определить дату публикации при отправке записи с фронтенда с использованием wp_insert_post (Trac)?
Мой код сейчас публикует с mysql временем...
// Проверяем наличие даты в POST запросе
if (isset ($_POST['date'])) {
$postdate = $_POST['Y-m-d'];
}
else {
$postdate = $_POST['2011-12-21'];
}
// ДОБАВЛЯЕМ ДАННЫЕ ИЗ ФОРМЫ В МАССИВ $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(),
);
// СОХРАНЯЕМ ЗАПИСЬ
$pid = wp_insert_post($new_post);

Если вы не укажете post_date, WordPress автоматически заполнит его текущей датой и временем.
Чтобы установить другую дату и время, используйте структуру [ Y-m-d H:i:s ]
. Пример с вашим кодом приведен ниже.
$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(),
);
// СОХРАНЯЕМ ЗАПИСЬ
$pid = wp_insert_post($new_post);

Спасибо, Роб! Добавление $postdate = date('2010-02-23 18:57:33');
фактически приводит к прекращению работы полей ввода, возможно, это просто баг в Chrome...

Я сам проверил, и это работает. Возможно, ваша проблема в другой части кода.

Я попробовал использовать этот формат даты, но получаю Notice: A non well formed numeric value encountered in C:\xampp\htdocs\wordpress\wp-includes\functions.php on line 4028

для преобразования вашей даты в формат Wordpress (MySQL DATETIME), попробуйте это:
$date_string = "Sept 11, 2001"; // или любая строка вида "20110911" или "2011-09-11"
// возвращает: string(13) "Sept 11, 2001"
$date_stamp = strtotime($date_string);
// возвращает: int(1000166400)
$postdate = date("Y-m-d H:i:s", $date_stamp);
// возвращает: string(19) "2001-09-11 00:00:00"
$new_post = array(
// другие аргументы
'post_date' => $postdate
);
$pid = wp_insert_post($new_post);
или, если хотите сделать это более компактно:
'post_date' => date("Y-m-d H:i:s", strtotime("Sept 11, 2001"))

Для сообщества представляю мой окончательный рабочий код:
заголовок
$year = $_REQUEST['year'];
$month = $_REQUEST['month'];
$day = $_REQUEST['day'];
$postdate = $year . "-" . $month . "-" . $day . " 08:00:00";
$new_post = array(
'post_title' => $title, // заголовок записи
'post_content' => $description, // содержание записи
'post_status' => 'publish', // статус записи (опубликована)
'post_author' => get_current_user_id(), // ID автора записи
'post_date' => $postdate // дата публикации
);
