Как предотвратить публикацию публикаций слишком близко друг к другу?
Я управляю блогом, состоящим из 25 авторов. Иногда некоторые из них находятся в процессе написания нового сообщения сразу, и они заканчивают публикацию их слишком близко друг к другу.
Есть ли способ предотвратить это? Что-то сказать: «Еще один пост просто заработал в течение последних 5 минут. Вам нужно подождать 55 минут, чтобы опубликовать ваши».
2 ответа
Вот очень грубый блок кода, который должен вас запустить. То, что он делает, - это поиск последней «будущей» или «опубликованной» публикации, и если это значение меньше 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 пост-планирование, и если уже есть будущий пост, следующий будет запланирован после этого запланированного сообщения. Это означает, что он может потенциально планировать должности в будущем.
Возможно, вы захотите освободить определенные роли от этого планирования по расписанию или потребовать его только для одной роли, чтобы просто сохранить управление.
В репозитории есть плагин с именем Auto Future Date , который делает что-то вроде это. Он не обновлялся довольно долго, но большая часть кода кажется очень полезной.
Я не тестировал его, но скриншоты делают его похожим на то, что вы все равно можете публиковать публикацию и не придерживаться save_post
крючок автоматически. Создание этого кода с помощью правильных крючков должно сделать трюк.