Formatarea corectă a post_date pentru wp_insert_post?

23 dec. 2011, 00:55:29
Vizualizări: 59.5K
Voturi: 16

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);
0
Toate răspunsurile la întrebare 5
4
30

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);
23 dec. 2011 01:08:25
Comentarii

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

MTT MTT
23 dec. 2011 01:17:56

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

Rob Vermeer Rob Vermeer
23 dec. 2011 01:28:50

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

Ari Ari
3 nov. 2013 15:49:07

ar trebui să fie $postdate = '2010-02-23 18:57:33';, deoarece date() necesită un format de dată literal pentru procesare, nu numere. Sau $postdate = date('Y-m-d H:i:s', strtotime('2010-02-23 18:57:33'));

Alex K Alex K
13 ian. 2014 10:32:48
1

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"))
19 aug. 2013 17:22:54
Comentarii

Acest lucru este foarte util pentru formatarea unui timestamp Unix, în special codul date("Y-m-d H:i:s", $date_stamp).

David David
26 sept. 2017 00:26:18
1

Nu poți formata $_POST['date'] în acest fel... Va trebui să procesezi valoarea din $_POST['date'] prin ceva de genul $postdate = date( $_POST['date'] )... Există și posibilitatea de a apela get_option pentru setările blogului. Vezi Option Reference în Codex.

23 dec. 2011 13:03:00
Comentarii

Utilizarea Date a întrerupt efectiv postarea și returna o eroare 404. Totuși, mulțumesc Kaiser pentru îndrumare!

MTT MTT
23 dec. 2011 18:17:29
0

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

am dat peste acest lucru prin Google. știu că este vechi, dar nu există un răspuns clar. codul WordPress folosește current_time( 'mysql' ) pentru a salva data/ora în funcția wp_update_post! acest lucru va genera formatul de dată dorit.

24 feb. 2020 11:24:36