这是一段非常粗略的代码,应该可以帮助您开始。它所做的是查找最近的“未来”或“发布”帖子,如果该值与最新安排的帖子相差不到1小时,它会将当前帖子安排为1小时加上找到的“最近”时间。
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);
事实上确实如此
force 职位安排,如果已经有未来职位,下一个职位将安排在已经安排的职位之后。这意味着它有可能将职位安排到遥远的未来。
您可能希望将某些角色从该post调度中免除,或者仅对单个角色要求它,以帮助保持事情的可管理性。