纯代码实现 WP 采集到的草稿文章每天定时发布

优采云 发布时间: 2020-08-04 09:04

  定时将草稿箱中的文章改为早已发布的状态文章定时自动采集,纯代码实现的技巧。您也可以通过这些方式实现其他定时任务。

  当我们使用采集插件采集到文章以后,并不想使它立即发布,而是希望它在规定的时间点发布。这样做经验上来看是有利于SEO的。但是每晚都去自动去更新一下文章状态变得很low了。下面的代码可以帮你实现定时发布的功能:

  //定时任务,每天凌晨0点钟

add_action( 'wp', 'zrz_post_schedule' );

function zrz_post_schedule() {

if (!wp_next_scheduled( 'zrz_post_schedule_event' )) {

$date = new DateTime( 'tomorrow', new DateTimeZone('Asia/Shanghai') );

$timestamp = $date->getTimestamp();

wp_schedule_event($timestamp, 'daily', 'zrz_post_schedule_event');

}

}

//修改文章状态动作

add_action( 'zrz_post_schedule_event', 'zrz_post_schedule_do_this_daily' );

function zrz_post_schedule_do_this_daily() {

$args = array(

'orderby' => 'date',//按照时间排序

'order' => 'ASC',//升序排列,ID从小到大

'post_type' => 'post',//文章类型

'post_status' => 'draft',//只检查文章状态是草稿的文章

'posts_per_page' => 10,//要发布的数量

);

$posts = get_posts( $args );

if(count($posts) > 0){

foreach ($posts as $post) {

$my_post = array(

'ID' => $post->ID,

'post_status' => 'publish',

);

wp_update_post( $my_post );

}

}

}

  请将里面的代码复制到主题的 functions.php 文件,或者子主题的 functions.php 文件中。

  如果时间不确切,请将下边代码也装入 functions.php 文件,刷一下首页,然后删除即可。

  $times = wp_next_scheduled( 'zrz_post_schedule_event' );

wp_unschedule_event( $times, 'zrz_post_schedule_event' );

$date = new DateTime( 'tomorrow', new DateTimeZone('Asia/Shanghai') );

$timestamp = $date->getTimestamp();

wp_schedule_event($timestamp, 'daily', 'zrz_post_schedule_event');

  发散一下,你可以通过这些方法进行其他定时任务文章定时自动采集,比如定时评论、定时通知、定时更新数据等等。以上代码没有实际测试过,有问题请在下边留言!

  End

  最后更改:2019-05-8 12:17

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线