问题描述
我管理一个由大约 25 位作家组成的博客。有时候,他们中的一些人正在一次写一个新的帖子,最后他们发现他们彼此太接近。
有没有办法防止这种情况发生?有话要说 「另一篇文章刚刚在最近的 5 分钟内上线,你需要等待 55 分钟才能出版。」
最佳解决方案
这是一个非常粗略的代码块,应该让你开始。它的作用是查找最新的”future” 或”publish” 帖子,如果该值与最新的预定帖子不同于 1 小时,则将当前帖子安排到一小时加上发现的”most recent” 时间。
function force_time_between_posts_wpse_104677($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; // post publication spacing in minutes
$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_wpse_104677',1,2);
这实际上是强制后期安排,如果已经有了未来的职位,那么下一个将在那个已经安排的职位之后安排。这意味着它可能潜在地安排未来的职位。
您可能希望免除某些角色从这个职位安排,或要求它只为一个角色,只是为了帮助保持可管理性。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。