問題描述

我管理一個由大約 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。