Formatação correta de post_date para wp_insert_post?

7

Qual é a maneira correta de definir a data de postagem ao enviar uma postagem do front end usando wp_insert_post ( Trac )?

Meu trecho agora está publicando com a hora do mysql ...

if (isset ($_POST['date'])) {
    $postdate = $_POST['Y-m-d'];
}
else {
    $postdate = $_POST['2011-12-21'];
}

// ADD THE FORM INPUT TO $new_post ARRAY
$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(),
);

//SAVE THE POST
$pid = wp_insert_post($new_post);
    
por torinagrippa 22.12.2011 / 23:55

4 respostas

15

Se você não adicionar um post_date, o WordPress o preencherá automaticamente com a data e a hora atuais.

Para definir outra data e hora [ Y-m-d H:i:s ] é a estrutura correta. Um exemplo abaixo com o seu 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(),
);

//SAVE THE POST
$pid = wp_insert_post($new_post);
    
por Rob Vermeer 23.12.2011 / 00:08
3

para converter sua data no formato Wordpress (MySQL DATETIME), tente isto:

$date_string = "Sept 11, 2001"; // or any string like "20110911" or "2011-09-11"
// returns: string(13) "Sept 11, 2001"

$date_stamp = strtotime($date_string);
// returns: int(1000166400)

$postdate = date("Y-m-d H:i:s", $date_stamp);
// returns: string(19) "2001-09-11 00:00:00"

$new_post = array(
    // your other arguments
   'post_date'     =>   $postdate
);

$pid = wp_insert_post($new_post);

ou claro, se você quiser ser sexy, faça isso:

'post_date'     => date("Y-m-d H:i:s", strtotime("Sept 11, 2001"))
    
por JP Lew 19.08.2013 / 16:22
2

Você não pode formatar o $_POST['date'] assim ... Você terá que executar o valor de $_POST['date'] através de algo como $postdate = date( $_POST['date'] ) ... Há também a possibilidade de chame get_option para as configurações do blog. Veja Referência de Opção no Codex.

    
por kaiser 23.12.2011 / 12:03
1

Para a comunidade, aqui está meu código de trabalho final:

cabeçalho

$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(),
    'post_date'     =>  $postdate
);
    
por torinagrippa 23.12.2011 / 17:19