当前位置:首页>WordPress建站>基础教程>让WordPress每篇文章的发布时间至少间隔1小时

让WordPress每篇文章的发布时间至少间隔1小时

作为WordPress多作者博客,也许你会希望发布文章的时间不要凑在一起,有一定的时间间隔可能更适合读者。比如,让WordPress每篇文章的发布时间至少间隔1小时,就是一个不错的做法。

post-publication-spacing-in-minutes-wpdaxue_com

将下面的代码添加到当前主题的 functions.php 文件:

//设定每篇文章的发布间隔 
//From https://www.wpdaxue.com/post-publication-spacing-in-minutes.html
function force_time_between_posts($data, $postarr) {
	global $wpdb;
	if (empty($postarr['ID'])) return $data;

	$latest = $wpdb->get_var("
		SELECT post_date
		FROM {$wpdb->posts} 
		WHERE post_status IN('future','publish') 
		AND post_type = 'post' 
		AND ID != {$postarr['ID']}
		ORDER BY post_date DESC
		LIMIT 1");
	$distance = 60; // 时间间隔(分钟)
	$latest = strtotime($latest);
	$current = strtotime($data['post_date']);

	if ($latest < $current) {
		$diff = $current - $latest;
	} else { 
		$diff = 0;
	}

	if ($diff >= 0 && $diff < ($distance * 60)) {
		$new_date = $latest + ($distance * 60);
		$date = date('Y-m-d H:i:s',$new_date);
		$date_gmt = get_gmt_from_date($date);
		$data['post_date'] = $date;
		$data['post_date_gmt'] = $date_gmt;
		$data['post_status'] = 'future';
	}
	return $data;
}
add_action('wp_insert_post_data','force_time_between_posts',1,2);

以上代码的 15 行的 60 为时间间隔,你可以根据自己的需要修改,默认为 60 分钟。

代码的效果:发布新文章时,会自动检测上一篇文章的发布时间,如果超过60分钟,就直接发布,如果小于60分钟,就自动定时间隔60分钟发布。需要注意的是,所检测的是所有已发布和定时发布的文章中的最后一篇。如果最后定时的那篇文章是第二天早上8点,那你后面写的文章,想定时到第二天早上8点以前都是不允许的,会自动定时为9点。

参考资料:http://wordpress.stackexchange.com/questions/104677

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
欢迎关注WordPress大学公众号 WPDAXUE
基础教程

显示WordPress页面查询次数、加载时间和内存占用

2013-6-28 7:36:00

基础教程

WordPress自定义文章模板插件:Custom Post Template

2013-7-6 8:40:00

8 条回复 A文章作者 M管理员
  1. shayushuiqi7

    求助倡萌君

  2. shayushuiqi7

    如何设置一篇文章 同一访客 24小时内只能阅读1次呢? 下次就要24小时之后才能查看了

  3. 嘻嘻哈哈

    有个不足,就是当用户角色是投稿者的时候,文章应当是保存为待审核,这个代码也将文章定时发布

  4. 有许多BUG…

    • 比如呢?

  5. 也就是说点了发布之后会自动延迟的功能了。

    • 是的

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索