В WordPress каждая правка поста сохраняется как отдельная редакция (ревизия), что позволяет откатиться к предыдущим версиям текста. Однако с течением времени накопление большого количества редакций значительно увеличивает размер базы данных, замедляет работу сайта и повышает нагрузку на сервер. В этой статье мы подробно разберём, как удалить старые редакции постов в WordPress, используя как готовые плагины, так и собственные функции с примерами кода.
Почему важно удалять старые редакции в WordPress
Каждая ревизия – это отдельная запись в таблице wp_posts с типом revision. На активных сайтах с большим количеством контента и частыми правками количество таких записей может достигать десятков или сотен тысяч. Это приводит к:
- увеличению размера базы данных, что замедляет запросы;
- повышенной нагрузке на сервер при резервном копировании и оптимизации;
- замедлению работы административной панели;
- увеличению времени загрузки страниц с редактором и списками постов.
Оптимизация базы данных за счёт удаления ненужных редакций – простой способ увеличить производительность сайта без потери важных данных.
Как посмотреть количество редакций в базе данных
Для оценки текущего объёма редакций можно выполнить SQL-запрос через phpMyAdmin или любой другой инструмент управления базой данных:
SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';Эта команда вернёт количество всех ревизий на вашем сайте. Если число больше нескольких тысяч, то стоит задуматься об их очистке.
Удаление редакций с помощью плагинов
Плагин WP-Optimize
WP-Optimize – популярный плагин для очистки и оптимизации базы данных. Он удаляет ревизии, спам-комментарии, временные данные и многое другое.
Чтобы удалить редакции с помощью WP-Optimize:
- Установите и активируйте плагин с официального репозитория.
- Перейдите в раздел «WP-Optimize» → «База данных».
- Отметьте пункт «Удалить все ревизии постов».
- Нажмите «Выполнить оптимизацию».
Плагин безопасно удалит все старые редакции, освободив место в базе.
Плагин Clearfy Pro
Если вы используете Clearfy Pro от WPSHOP, то в нем тоже есть функция для удаления ревизий. Она позволяет настроить удаление по возрасту и количеству сохранённых версий.
Удаление редакций вручную через SQL-запрос
Если вы предпочитаете не использовать плагины, можно удалить все ревизии напрямую из базы данных. Для этого выполните следующий запрос в phpMyAdmin или через консоль MySQL:
DELETE FROM wp_posts WHERE post_type = 'revision';Этот запрос безвозвратно удалит все редакции. Рекомендуется предварительно сделать полный бэкап базы данных.
Удаление старых редакций с помощью кода в functions.php
Для автоматизации процесса и удаления редакций старше определённого времени можно добавить функцию в файл functions.php вашей темы или в собственный плагин:
function wptemy_delete_old_revisions() {
global $wpdb;
$days = 30; // Удалять редакции старше 30 дней
$sql = $wpdb->prepare(
"DELETE FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_modified < %s",
date('Y-m-d H:i:s', strtotime('-' . $days . ' days'))
);
$deleted = $wpdb->query($sql);
return $deleted;
}
// Запускаем очистку при активации темы или плагина
add_action('after_switch_theme', 'wptemy_delete_old_revisions');Эта функция удалит все ревизии старше 30 дней. Вы можете изменить период по своему усмотрению. Для регулярного выполнения можно добавить задачу в Cron WordPress.
Добавление WP-Cron задачи для очистки ревизий
Чтобы запускать удаление автоматически, добавьте в functions.php следующий код:
function wptemy_schedule_revision_cleanup() {
if (!wp_next_scheduled('wptemy_revision_cleanup_hook')) {
wp_schedule_event(time(), 'daily', 'wptemy_revision_cleanup_hook');
}
}
add_action('wp', 'wptemy_schedule_revision_cleanup');
add_action('wptemy_revision_cleanup_hook', 'wptemy_delete_old_revisions');<Теперь каждый день будет запускаться очистка ревизий старше 30 дней.
Ограничение количества ревизий для новых постов
Чтобы избежать накопления слишком большого количества редакций в будущем, можно ограничить их число. Добавьте в wp-config.php следующую строку:
define('WP_POST_REVISIONS', 5); // Максимум 5 ревизий на постWordPress сохранит не более 5 ревизий для каждого поста, что существенно снизит рост базы данных.
Выводы и рекомендации
Удаление старых редакций – необходимая практика для поддержания производительности и чистоты базы данных WordPress. Используйте плагины WP-Optimize или Clearfy Pro для удобной очистки, либо автоматизируйте процесс с помощью собственного кода и WP-Cron. Не забывайте ограничивать количество ревизий, чтобы избежать больших объёмов лишних данных в будущем.
Если нужна более продвинутая работа с отзывами и оптимизацией, обратите внимание на плагин WPRemark, который поможет улучшить взаимодействие с пользователями и не повлияет на производительность.