wp_insert_post的post_date格式正确吗?


10

使用wp_insert_postTrac)从前端提交帖子时,定义帖子日期的正确方法是什么?

我的代码段现在正在以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);

Answers:


23

如果您不添加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(),
);

//SAVE THE POST
$pid = wp_insert_post($new_post);

谢谢罗布!添加$postdate = date('2010-02-23 18:57:33');实际上会使输入框停止运行,虽然这可能只是Chrome中的一个错误……
m-torin 2011年

1
我已经尝试过了,而且效果很好。也许您的问题出在代码的其他地方。
Rob Vermeer

我试图用日期格式化,并且它返回Notice: A non well formed numeric value encountered in C:\xampp\htdocs\wordpress\wp-includes\functions.php on line 4028
阿里

2
应该为$postdate = '2010-02-23 18:57:33';,因为date()需要文字日期格式来处理,而不是数字。或$postdate = date('Y-m-d H:i:s', strtotime('2010-02-23 18:57:33'));
Alex K

3

要将您的日期转换为Wordpress(MySQL DATETIME)格式,请尝试以下操作:

$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);

或者,当然,如果您想真正变得性感,请执行以下操作:

'post_date'     => date("Y-m-d H:i:s", strtotime("Sept 11, 2001"))

这对于格式化Unix时间戳(特别是date("Y-m-d H:i:s", $date_stamp)代码)非常有帮助。
大卫

2

您无法格式化$_POST['date']像这样......你必须运行$_POST['date']通过像$postdate = date( $_POST['date'] )......还有的可能性,呼吁get_option的博客设置。请参阅《法典》中的“选项参考”。


使用日期实际上破坏了发布,并会返回404错误。谢谢凯撒的指引!
m-torin 2011年

2

对于社区,这是我的最终工作代码:

标头

$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
);

0

通过谷歌遇到。我知道它的历史了,但是没有确切的答案。wordpress代码用于current_time( 'mysql' )在wp_update_post函数中保存日期/时间!这将生成所需的日期格式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.