Как остановить автоматическое удаление записей в WordPress

Диагностика проблемы: почему записи удаляются автоматически

Если на вашем сайте WordPress неожиданно пропадают записи, причиной может быть одна из нескольких автоматических процедур очистки или кастомный код, вызывающий удаление. Частые источники проблемы:

  • Плагины оптимизации или очистки базы данных, настроенные на удаление старого или неактивного контента;
  • Кастомные скрипты или cron-задачи, настроенные на автоматическую очистку;
  • Ошибки в плагинах, управляющих кастомными типами записей;
  • Проблемы с правами доступа или ролями пользователей, приводящие к ошибочному удалению;
  • Вмешательство в WP_Query с параметрами, приводящими к удалению записей.

Для начала нужно выяснить источник удаления, чтобы не устранять симптомы, а устранить причину.

Пошаговое решение: как остановить автоматическое удаление записей

1. Проверка активных плагинов на автоматическую очистку

Перейдите в раздел «Плагины» и обратите внимание на установленные плагины оптимизации, например, WP-Optimize, Advanced Database Cleaner, или кастомные скрипты. В настройках таких плагинов отключите автоматическую очистку или удаление записей.

2. Отключение кастомных cron-задач, вызывающих удаление

Используйте плагин Cron Control или выполните код для просмотра запущенных cron-задач:

add_action('admin_init', function() {
    $crons = _get_cron_array();
    echo '<pre>';
    print_r($crons);
    echo '</pre>';
});

Ищите задачи, которые могут удалять записи, например, с именами вроде delete_old_posts или похожими. Отключите их через плагин для управления cron или удалите вызов в коде.

3. Поиск кода в functions.php и плагинах

Проверьте, нет ли в functions.php вашей темы или в файлах плагинов функций, вызывающих wp_delete_post() или wp_trash_post() для массового удаления. Например:

function auto_delete_old_posts() {
    $args = [
        'post_type' => 'post',
        'date_query' => [
            [
                'before' => '1 year ago'
            ]
        ],
        'posts_per_page' => -1,
        'fields' => 'ids'
    ];
    $old_posts = get_posts($args);
    foreach ($old_posts as $post_id) {
        wp_delete_post($post_id, true);
    }
}
add_action('wp_scheduled_delete', 'auto_delete_old_posts');

Если такой код есть и вы не хотите удаление, закомментируйте или удалите вызов.

4. Проверка прав пользователей и ролей

Убедитесь, что никто из пользователей с достаточными правами не удаляет записи вручную или через сторонние инструменты. Для дополнительной безопасности временно ограничьте права на удаление.

Как проверить, что автоматическое удаление остановлено

1. Создайте тестовую запись с уникальным названием и датой публикации.

2. Подождите период, на протяжении которого раньше происходило удаление (например, сутки).

3. Проверьте наличие записи в админке и через SQL-запрос:

SELECT * FROM wp_posts WHERE post_title = 'Уникальное название тестовой записи';

Если запись на месте — автоматическое удаление прекращено.

Частые ошибки и как их исправить

  • Ошибка: Отключение плагина, но удаление продолжается.
    Причина: Кастомные cron-задачи или код в теме.
    Решение: Проверьте cron и functions.php, отключите лишние задачи и функции.
  • Ошибка: Проблемы после отключения автоматической очистки — база разрастается.
    Причина: Нет контроля за устаревшим контентом.
    Решение: Настройте ручную очистку по расписанию с проверкой.
  • Ошибка: Неправильный фильтр по дате удаляет нужные записи.
    Причина: Ошибка в параметрах date_query.
    Решение: Перепроверьте параметры и используйте тестовые записи.

Практические советы по безопасности и производительности

  • Всегда делайте резервные копии базы перед изменениями.
  • Для автоматической очистки используйте WP-CLI с командами, а не крон в PHP, это надежнее.
  • Ограничьте права удаления для пользователей с ролями ниже администратора.
  • Используйте плагин Clearfy Pro для безопасной оптимизации и удаления дублей (https://wpshop.ru/plugins/clearfy?utm_source=wplessons.ru&utm_medium=article&utm_campaign=kak-ostanovit-avtomaticheskoe-udaleniye-zapisej-v-wordpress).

Сравнение вариантов управления автоматическим удалением

МетодПреимуществаНедостатки
Отключение плагина очисткиПросто, быстроМожет снизить производительность из-за накопления данных
Отключение cron-задачТочный контроль, не влияет на другие функцииТребует технических знаний
Редактирование кодаПолный контроль, гибкостьРиск ошибок, требует тестирования
Как изменить размер и форму аватара в WordPress с примерами кода
26.01.2026
Автоматическое удаление товаров из заказов WooCommerce после отмены или возврата
04.05.2026
Как использовать метод pre_get_posts для создания сложного фильтрования в WordPress
05.03.2026
Как отключить автовыделение и автозагрузку изображений в WordPress
02.02.2026
Как автоматически удалять старые неиспользуемые изображения в медиабиблиотеке WordPress
09.03.2026