В процессе ведения сайта на WordPress часто возникает необходимость автоматически создавать черновики для планирования публикаций или удаления старых черновиков, которые не были опубликованы и захламляют админку. В этой статье мы подробно разберём, как можно автоматизировать эти задачи с помощью собственного кода и плагинов, а также приведём практические примеры.
Зачем нужна автоматизация работы с черновиками в WordPress
Черновики — это незавершённые публикации, которые не отображаются на сайте, но при этом хранятся в базе данных. Автоматическое создание черновиков может пригодиться, если вы хотите заранее подготовить структуру контента, а удаление старых черновиков помогает поддерживать порядок и уменьшать нагрузку на базу данных.
Ручное управление черновиками становится неудобным при большом объёме контента или при работе с командой. Автоматизация позволяет:
- Экономить время на рутину
- Поддерживать чистоту в админке и базе данных
- Уменьшать вероятность забытых или потерянных материалов
Как автоматически создавать черновики — пример кода
Для автоматического создания черновиков можно использовать функцию wpdirect_create_auto_draft, которая добавит новый пост со статусом "черновик". Например, такой код можно запускать по расписанию с помощью WP Cron:
function wpdirect_create_auto_draft() {
$post_data = array(
'post_title' => 'Автоматический черновик ' . current_time('Y-m-d H:i:s'),
'post_content' => '',
'post_status' => 'draft',
'post_author' => 1,
'post_type' => 'post',
);
$post_id = wp_insert_post($post_data);
if (is_wp_error($post_id)) {
error_log('Ошибка создания черновика: ' . $post_id->get_error_message());
} else {
error_log('Создан новый черновик с ID: ' . $post_id);
}
}
// Регистрируем cron событие, если ещё не зарегистрировано
if (!wp_next_scheduled('wpdirect_auto_draft_event')) {
wp_schedule_event(time(), 'hourly', 'wpdirect_auto_draft_event');
}
// Хук на наше событие
add_action('wpdirect_auto_draft_event', 'wpdirect_create_auto_draft');
Этот код создаёт новый черновик каждый час. Для запуска крона нужно, чтобы на сайте были посещения, либо настроен системный cron. Важно подставлять нужного автора и тип записи.
Автоматическое удаление черновиков старше определённого срока
Чтобы не накапливать множество устаревших черновиков, можно периодически удалять те, которые не были изменены и созданы давно. Для этого используем функцию wpdirect_delete_old_drafts:
function wpdirect_delete_old_drafts() {
global $wpdb;
$days = 30; // Удаляем черновики старше 30 дней
$date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));
$drafts = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM $wpdb->posts WHERE post_status = 'draft' AND post_modified < %s",
$date
));
foreach ($drafts as $draft_id) {
wp_delete_post($draft_id, true); // true — удаление без возможности восстановления
}
error_log('Удалено черновиков: ' . count($drafts));
}
// Регистрируем cron событие для удаления черновиков
if (!wp_next_scheduled('wpdirect_delete_old_drafts_event')) {
wp_schedule_event(time(), 'daily', 'wpdirect_delete_old_drafts_event');
}
add_action('wpdirect_delete_old_drafts_event', 'wpdirect_delete_old_drafts');
Такой подход освобождает базу данных и админку от неактуальных записей.
Использование плагина для управления черновиками и автоматизацией
Если не хотите писать код, можно воспользоваться плагинами, которые расширяют функциональность работы с черновиками:
- Auto Post Scheduler — позволяет автоматически создавать и публиковать черновики по расписанию.
- WP Bulk Delete — удобный инструмент для массового удаления записей по различным условиям, включая статус "черновик" и дату изменения.
- Clearfy Pro (https://wpshop.ru/clearfy-pro/?utm_source=wpdirect.ru&utm_medium=article&utm_campaign=kak-avtomatizirovat-sozdanie-i-udalenie-chernovikov-v-wordpress) — оптимизационный плагин, который среди прочего помогает управлять разными типами контента и может помочь с автоматизацией процессов.
Для интеграции с WP Cron и расширенной настройки задач можно использовать WP Control или Advanced Cron Manager.
Практические советы по автоматизации и безопасности
При внедрении автоматизации учитывайте следующие моменты:
- Всегда делайте резервную копию базы данных перед массовым удалением записей.
- Тестируйте код на тестовом сайте, чтобы избежать удаления нужного контента.
- Для более гибкого управления используйте пользовательские мета-поля, чтобы отмечать черновики, которые можно удалять или создавать.
- Если сайт большой, рассмотрите использование WP CLI для управления черновиками через командную строку — это может быть быстрее и удобнее.
Заключение
Автоматизация создания и удаления черновиков в WordPress помогает поддерживать порядок и облегчает работу с контентом. Используя приведённые примеры кода и/или подходящие плагины, вы сможете настроить процесс под собственные задачи и оптимизировать рабочий процесс.
Если хотите расширить функционал вашего сайта простыми и удобными инструментами, рекомендую обратить внимание на Clearfy Pro — мощный плагин для оптимизации и управления WordPress.