如何防止发布的帖子过于接近?

时间:2013-06-29 作者:Tam N.

我管理一个由大约25名作家组成的博客。有时,他们中的一些人正在一次写一篇新文章,结果他们发表得太近了。

有没有办法防止这种情况发生?有句话要说:“最近5分钟内又有一篇帖子上线了。你需要等待55分钟才能发布你的帖子。”

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

这是一段非常粗略的代码,应该可以帮助您开始。它所做的是查找最近的“未来”或“发布”帖子,如果该值与最新安排的帖子相差不到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调度中免除,或者仅对单个角色要求它,以帮助保持事情的可管理性。

SO网友:Coen Jacobs

存储库中有一个名为Auto Future Date 是这样的。它已经有一段时间没有更新了,但大多数代码似乎都很有用。

我还没有测试过,但截图让你看起来仍然可以直接发布帖子,而不必坚持save_post 自动挂钩。让这段代码与正确的挂钩一起工作应该可以做到这一点。

结束

相关推荐

运行PUBLISH_POST时检测发布类型

我目前有WordPress构建XML Sitemap 每次aPOST 或PAGE 是PUBLISHED 通过使用此操作。。。add_action(\"publish_post\", \"create_news_sitemap\"); 我不是在做同样的过程,而是为了News Sitemap 有不同的标准。例如,它只能显示不早于48小时的帖子。我有我的代码工作,但我想稍微优化一下。那么什么时候add_action(\"publish_post\", \"create_news_sitemap\");