Каждый опытный разработчик WordPress знает, что со временем база данных сайта разрастается и накапливает много мусора: старые ревизии постов, автосохранения, удалённые комментарии, транзиенты и многое другое. Всё это может замедлять работу сайта и увеличивать время отклика. В этой статье мы подробно разберём, как оптимизировать базу данных WordPress, удаляя старые ревизии и очищая ненужные данные, используя как готовые плагины, так и собственные скрипты.
Что такое ревизии в WordPress и почему их стоит удалять
Ревизии — это автоматические и ручные сохранения изменений в записях и страницах. Они очень полезны для восстановления предыдущих версий контента, но со временем их количество может исчисляться сотнями и даже тысячами. Каждая ревизия — это отдельная запись в таблице wp_posts с типом revision. Чем больше ревизий, тем больше размер базы данных, тем медленнее выполняются запросы.
Удалять ревизии нужно аккуратно и регулярно, чтобы держать базу в порядке и не перегружать сервер. Если вы хотите сохранить несколько последних версий для безопасности, можно ограничить количество ревизий в настройках WordPress или с помощью плагина.
Как ограничить количество ревизий в WordPress
Для ограничения количества ревизий добавьте в файл wp-config.php следующую строку:
define('WP_POST_REVISIONS', 3);Здесь число 3 означает, что будут храниться только три последние ревизии для каждой записи. Это простое решение, чтобы контролировать рост базы.
Удаление старых ревизий с помощью плагинов
Если вы не хотите работать с кодом напрямую, существуют популярные плагины, которые помогут очистить базу от старых ревизий и другого мусора.
Плагин WP-Optimize
WP-Optimize — это мощный инструмент для очистки и оптимизации базы данных. Он позволяет удалять ревизии, удалённые записи, спам-комментарии и прочие ненужные данные. Также плагин умеет запускать оптимизацию таблиц базы данных.
Чтобы удалить ревизии и очистить базу через WP-Optimize:
- Установите и активируйте плагин через репозиторий WordPress.
- Перейдите в раздел WP-Optimize → Database.
- Выберите опции удаления ревизий, автосохранений, спама и т.п.
- Нажмите кнопку «Run all selected optimizations».
Плагин Advanced Database Cleaner
Этот плагин позволяет более тонко управлять очисткой базы данных. Вы можете просмотреть список ревизий, черновиков, транзиентов и других элементов, выбрать, что удалить, и запустить очистку.
Удаление ревизий и очистка базы с помощью пользовательского кода
Для тех, кто хочет иметь полный контроль и автоматизировать процесс, можно написать собственные функции на PHP, которые будут удалять старые ревизии и оптимизировать таблицы.
Пример функции для удаления старых ревизий (wpexperts_delete_old_revisions)
Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:
function wpexperts_delete_old_revisions() {
global $wpdb;
// Удаляем все ревизии из базы
$deleted = $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
// Оптимизируем таблицу posts для освобождения места
$wpdb->query("OPTIMIZE TABLE {$wpdb->posts}");
return $deleted;
}После добавления функции вызовите её один раз, например, из админки или через wp-cli, чтобы очистить ревизии.
Автоматический запуск очистки с помощью wp-cron
Чтобы не делать очистку вручную, можно настроить регулярное выполнение функции с помощью встроенного планировщика WordPress:
function wpexperts_schedule_revision_cleanup() {
if (!wp_next_scheduled('wpexperts_revision_cleanup_hook')) {
wp_schedule_event(time(), 'weekly', 'wpexperts_revision_cleanup_hook');
}
}
add_action('wp', 'wpexperts_schedule_revision_cleanup');
add_action('wpexperts_revision_cleanup_hook', 'wpexperts_delete_old_revisions');Этот код настроит еженедельную очистку ревизий, что поможет поддерживать базу в оптимальном состоянии.
Дополнительные советы по оптимизации базы данных WordPress
Помимо удаления ревизий, есть и другие приёмы для поддержания базы данных в порядке:
- Удаление удалённых записей и комментариев. WordPress не удаляет их сразу, а помещает в корзину. Очистка корзины освобождает место.
- Очистка транзиентов. Временные данные, которые могут устаревать и занимать место. Плагины типа WP-Optimize автоматически очищают их.
- Оптимизация таблиц базы данных. Команда
OPTIMIZE TABLEвосстанавливает индекс и освобождает неиспользуемое пространство. - Использование плагинов кеширования. Они снижают нагрузку на базу, уменьшая число запросов.
Регулярное выполнение этих действий поможет избежать замедления сайта и проблем с производительностью.
Заключение
Оптимизация базы данных — обязательный этап в обслуживании любого WordPress-сайта. Удаление старых ревизий и очистка от мусора значительно повышают скорость и стабильность работы. Используйте готовые плагины для удобства или собственные скрипты для гибкости и автоматизации. Настройте регулярное обслуживание базы, чтобы ваш сайт всегда работал быстро и без сбоев.