Что такое редакции постов в WordPress и зачем их удалять
WordPress автоматически сохраняет редакции (ревизии) постов и страниц при их редактировании. Это помогает вернуться к предыдущим версиям текста, если что-то пошло не так. Однако со временем количество таких ревизий растет, особенно на крупных сайтах с частыми обновлениями, что значительно увеличивает размер базы данных.
Накопление редакций может замедлить работу сайта, увеличить время бэкапов и затруднить работу с базой данных. Поэтому периодическая очистка старых редакций — важная задача для оптимизации WordPress.
В этой статье мы рассмотрим, как безопасно и эффективно удалить старые редакции, используя плагины и собственный код.
Как ограничить количество сохраняемых редакций с помощью плагина и кода
Использование плагина WP-Optimize для удаления редакций
Один из самых популярных плагинов для оптимизации базы данных — WP-Optimize. Он позволяет удалять ревизии, мусорные записи, спам и многое другое одним кликом.
Чтобы удалить старые редакции:
- Установите и активируйте WP-Optimize.
- Перейдите в раздел «WP-Optimize» на панели управления.
- Выберите вкладку «База данных».
- Отметьте пункт «Удалить все старые редакции записей».
- Нажмите «Выполнить оптимизацию».
Плагин безопасно удалит все ревизии, освобождая место в базе.
Ограничение количества редакций через файл wp-config.php
Чтобы предотвратить накопление большого количества ревизий, можно ограничить их число в настройках WordPress. Добавьте в wp-config.php перед строкой /* That's all, stop editing! Happy publishing. */ следующий код:
define('WPPOSTS_LIMIT_REVISIONS', 5);Вместо 5 можно указать любое число — столько редакций будет сохраняться для каждой записи. Если поставить 0, редакции не будут сохраняться вовсе, но это не рекомендуется, т.к. вы потеряете возможность отката.
Этот способ помогает контролировать количество ревизий и не допускать избыточного роста базы.
Удаление редакций через SQL-запросы: инструкция и пример
Иногда по соображениям безопасности или для более гибкого контроля разработчики предпочитают удалять редакции напрямую через SQL. Сделать это можно с помощью phpMyAdmin или любого другого инструмента для работы с базой данных.
В WordPress редакции постов имеют тип revision. Чтобы удалить все редакции из базы, выполните следующий SQL-запрос:
DELETE FROM wp_posts WHERE post_type = 'revision';<Замените wp_ на ваш префикс таблиц, если он отличается.
Перед выполнением запроса обязательно сделайте резервную копию базы, чтобы избежать потери данных из-за ошибок.
Также можно удалить редакции для определенного поста, например:
DELETE FROM wp_posts WHERE post_type = 'revision' AND post_parent = 123;где 123 — ID нужного поста.
Создание функции для удаления редакций с префиксом wpupdate
Если хочется автоматизировать очистку редакций через код, можно добавить функцию в файл functions.php вашей темы или создать плагин. Ниже пример функции с префиксом wpupdate_, удаляющей все редакции:
function wpupdate_delete_all_revisions() {
global $wpdb;
$revisions_deleted = $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
return $revisions_deleted;
}Вызовите эту функцию там, где нужно, например, в админ-панели или по крону. Она вернет количество удаленных записей.
Можно также создать функцию с ограничением по возрасту редакций, чтобы удалять только старые, например, старше 30 дней:
function wpupdate_delete_old_revisions($days = 30) {
global $wpdb;
$date_limit = date('Y-m-d H:i:s', strtotime("-{$days} days"));
$revisions_deleted = $wpdb->query($wpdb->prepare(
"DELETE FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_modified < %s",
$date_limit
));
return $revisions_deleted;
}Влияние ревизий на производительность и советы по оптимизации
Избыточные редакции влияют на производительность сайта не только из-за размера базы, но и потому, что при загрузке поста WordPress иногда проверяет количество ревизий, что увеличивает нагрузку.
Рекомендуется:
- Регулярно удалять старые ревизии, особенно на активных сайтах.
- Ограничить количество сохраняемых редакций через
wp-config.php. - Использовать плагины для автоматической оптимизации базы, например WP-Optimize.
- Проводить резервное копирование перед очисткой.
- Проверять размер таблицы
wp_postsи выполнять оптимизацию базы данных (командаOPTIMIZE TABLE wp_posts;).
Следуя этим рекомендациям, вы сможете снизить нагрузку на сервер, уменьшить размер резервных копий и повысить общую скорость работы сайта.