WP_INSERT_POST来调度POST--但是什么都没有发生?

时间:2014-06-10 作者:kat

我正在尝试安排一篇当前为草稿的帖子:

function schedule() {

$postdate = date(\'2014-06-11 00:30:00\');
$post = array(
    \'ID\' => 11,
  \'post_status\'    => \'future\',
  \'post_type\'      => \'post\',
  \'post_author\'    => \'1\',
  \'ping_status\'    => \'closed\',
  \'to_ping\'        => \'http://rpc.pingomatic.com/\',
  \'post_date_gmt\'  => $postdate
);  
wp_insert_post( $post ); 
}
add_action(\'wp_head\', \'schedule\');
尽管这篇文章没有发生任何变化,但它仍然是一篇草稿?是否有其他方式安排帖子,或者我的代码是否有问题?

2 个回复
最合适的回答,由SO网友:kat 整理而成

正如Rarst提到的,我必须使用wp_update_post(), 但还有一个小把戏——一个人也必须设置edit_date = true 否则它的行为会很滑稽。最终代码如下所示:

function schedule() {

$postdate = date(\'2014-06-11 01:00:00\');
$postdate_gmt = date(\'2014-06-11 05:00:00\');
$post = array(
    \'ID\' => 11,
  \'post_status\'    => \'future\',
  \'post_type\'      => \'post\',
  \'post_author\'    => \'1\',
  \'ping_status\'    => \'closed\',
  \'to_ping\'        => \'http://rpc.pingomatic.com/\',
  \'post_date_gmt\'  => $postdate_gmt,
  \'post_date\'  => $postdate,
  \'edit_date\' => \'true\'
);  

wp_update_post( $post, true ); 
}

add_action(\'wp_head\', \'schedule\');
下面介绍了如何使用文本文件处理许多帖子:

Text File:

postid,server_time,gmt_time
postid,server_time,gmt_time
postid,server_time,gmt_time
postid,server_time,gmt_time
...
功能:

function schedule() {

    $fh = @fopen( dirname( __FILE__ ) . \'/schedule.txt\', \'r\' );

    if ( $fh ) {
        while ( ( $line = fgets( $fh ) ) !== false ) {
            $ids = explode( \',\', $line );
            array_walk( $ids, \'trim\' );

$postdate = date($ids[1]);
$postdate_gmt = date($ids[2]);
$post = array(
    \'ID\' => $ids[0],
  \'post_status\'    => \'future\',
  \'post_type\'      => \'post\',
  \'post_author\'    => \'5\',
  \'ping_status\'    => \'closed\',
  \'to_ping\'        => \'http://rpc.pingomatic.com/\',
  \'post_date_gmt\'  => $postdate_gmt,
  \'post_date\'  => $postdate,
  \'edit_date\' => \'true\'
);  

wp_update_post( $post, true ); 
        }
    }

    }

add_action(\'wp_head\', \'schedule\');
非常感谢在这篇文章和其他文章中提供帮助的所有人!

SO网友:Rarst

你不应该使用wp_insert_post() 操作现有的post。就是这样wp_update_post() 用于。

你可以通过true 作为其中一个的第二个参数,以便在发生故障时返回包含WP_Error 对象,而不是无用的0。有助于调试。

结束

相关推荐