Berikut ini adalah blok kode yang sangat kasar yang harus Anda mulai. Apa yang dilakukannya adalah mencari pos "masa depan" atau "terbitkan" terbaru dan jika nilainya kurang dari 1 jam berbeda dari pos terjadwal terbaru, pos itu menjadwalkan pos saat ini menjadi satu jam ditambah waktu "terbaru" yang ditemukan.
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);
Ini sebenarnya memaksa penjadwalan posting, dan jika sudah ada posting masa depan yang berikutnya akan dijadwalkan setelah posting yang sudah dijadwalkan. Itu artinya berpotensi menjadwalkan posting jauh ke depan.
Anda mungkin ingin membebaskan peran tertentu dari penjadwalan posting ini, atau mengharuskannya hanya untuk peran tunggal, hanya untuk membantu menjaga hal-hal dapat dikelola.