Como evitar que as publicações sejam publicadas próximas umas das outras?

8

Eu gerencio um blog que consiste em cerca de 25 escritores. Às vezes, alguns deles estão no processo de escrever um novo post de uma só vez, e acabam publicando-os muito próximos um do outro.

Existe uma maneira de evitar que isso aconteça? Algo a dizer "Outro post foi ao ar nos últimos 5 minutos. Você precisará aguardar 55 minutos para publicar o seu."

    
por Tam N. 29.06.2013 / 04:30

2 respostas

7

Aqui está um bloco muito grosseiro de código que deve começar. O que ele faz é procurar pela postagem "futura" ou "publicar" mais recente e, se esse valor for menor que 1 hora diferente da última postagem programada, ela agendará a postagem atual para uma hora mais a hora "mais recente" encontrada.

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);

Isso de fato força o agendamento de postagens, e se já houver uma postagem futura, a próxima será agendada após a postagem já agendada. Isso significa que pode potencialmente agendar publicações no futuro.

Você pode querer isentar determinadas funções desse agendamento de postagens ou exigir apenas uma única função, para ajudar a manter as coisas gerenciáveis.

    
por s_ha_dum 29.06.2013 / 23:03
0

Existe um plugin no repositório chamado Auto Future Date que faz algo assim. Não foi atualizado por um bom tempo, mas a maior parte do código parece bastante útil.

Eu não testei, mas as capturas de tela fazem parecer que você ainda pode publicar a postagem diretamente e não usar o save_post hook automaticamente. Fazer esse código funcionar com os ganchos certos deve funcionar.

    
por Coen Jacobs 29.06.2013 / 22:55