База данных WordPress со временем накапливает множество ненужных данных: удалённые записи, ревизии, спам-комментарии, остатки удалённых плагинов и многое другое. Это замедляет работу сайта и увеличивает время отклика. В этой статье расскажу, как эффективно очистить базу данных от мусора, используя готовые плагины и собственные решения на PHP.
Почему важно очищать базу данных WordPress от мусора
Со временем в базе данных накапливается множество временных и ненужных данных:
- Ревизии записей — WordPress сохраняет каждое изменение записи, что увеличивает таблицу
wp_posts. - Автосохранения — временные версии записей для предотвращения потери данных.
- Спам и удалённые комментарии — занимают место в таблице
wp_comments. - Транзиенты — временные данные кеша, которые иногда не удаляются автоматически.
- Остатки удалённых плагинов — часто плагины оставляют свои таблицы и опции, что засоряет базу.
Очистка базы данных не только уменьшит её размер, но и ускорит запросы, улучшит производительность сайта и снизит нагрузку на сервер.
Использование плагинов для очистки базы данных
Плагин WP-Optimize
WP-Optimize — один из самых популярных плагинов для оптимизации базы данных. Он позволяет удалять ревизии, спам, транзиенты и оптимизировать таблицы базы данных за пару кликов.
Как пользоваться:
- Установите и активируйте WP-Optimize.
- Перейдите в раздел WP-Optimize → Database.
- Выберите пункты для очистки (ревизии, спам, черновики и т. п.).
- Нажмите кнопку «Run all selected optimizations».
Плагин также умеет планировать автоматическую очистку базы, что удобно для регулярного обслуживания.
Плагин Clearfy Pro для очистки и оптимизации
Clearfy Pro — платный плагин с расширенными функциями оптимизации. Он умеет удалять остатки удалённых плагинов, отключать ненужные функции WordPress и очищать базу от мусора.
Особенность Clearfy в том, что он позволяет тонко настраивать оптимизацию и отключать ресурсоёмкие функции, что полезно для сайтов с ограниченными ресурсами.
Подробнее о Clearfy можно узнать на официальной странице.
Ручная очистка базы данных с помощью SQL и PHP
Если вы хотите сделать очистку более точечной или встроить её в автоматизацию, можно использовать свои скрипты. Ниже приведу примеры кода для удаления ревизий и транзиентов.
Удаление ревизий записей
Ревизии хранятся в таблице wp_posts с типом revision. Для удаления всех ревизий используйте такой SQL-запрос:
DELETE FROM wp_posts WHERE post_type = 'revision';Ещё лучше делать это через PHP, чтобы избежать ошибок и иметь возможность логировать операции:
function wpreset_delete_revisions() {
global $wpdb;
$table = $wpdb->posts;
$deleted = $wpdb->query("DELETE FROM {$table} WHERE post_type = 'revision'");
return $deleted;
}Вы можете вызвать эту функцию через WP-CLI или добавить в свой плагин для периодического запуска.
Удаление устаревших транзиентов
Транзиенты хранятся в таблице wp_options с опциями, начинающимися с _transient_. Для удаления устаревших транзиентов удобно использовать WPDB:
function wpreset_delete_expired_transients() {
global $wpdb;
$time = time();
$query = "DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout_%' AND option_value < %d";
$wpdb->query($wpdb->prepare($query, $time));
$query2 = "DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_%' AND option_name NOT LIKE '_transient_timeout_%'";
$wpdb->query($query2);
}Этот код удалит все транзиенты, у которых срок жизни истёк, а также их значения.
Как найти и удалить остатки удалённых плагинов
После удаления плагинов в базе могут остаться таблицы и опции, которые не удалились автоматически. Это может быть причиной замедления сайта и конфликтов.
Поиск таблиц плагинов в базе данных
Для начала нужно определить таблицы, относящиеся к удалённым плагинам. Обычно они имеют префиксы или названия, связанные с плагином.
Чтобы найти такие таблицы, можно использовать запрос к базе:
SHOW TABLES LIKE '%plugin_name%';После этого можно удалить найденные таблицы с помощью:
DROP TABLE IF EXISTS table_name;Но будьте очень осторожны и делайте резервные копии перед удалением.
Удаление опций плагинов
Опции плагинов хранятся в таблице wp_options с именами, часто начинающимися с префикса плагина. Для поиска можно использовать запрос:
SELECT option_name FROM wp_options WHERE option_name LIKE '%plugin_prefix%';Для удаления опций используйте PHP-функцию:
function wpreset_delete_plugin_options($prefix) {
global $wpdb;
$like = $wpdb->esc_like($prefix) . '%';
$wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->options} WHERE option_name LIKE %s", $like));
}Вызовите эту функцию с нужным префиксом, например wpreset_delete_plugin_options('myplugin_');.
Резервное копирование базы перед очисткой
Обязательно делайте резервные копии базы данных перед любыми операциями очистки, особенно если используете ручные запросы. Для этого удобно использовать плагин WPReset с функцией резервного копирования и восстановления:
- Установите WPReset.
- Создайте точку восстановления базы перед очисткой.
- В случае ошибки быстро восстановите предыдущую версию базы за пару кликов.
Автоматизация очистки базы данных с помощью WP-Cron
Чтобы база не засорялась, полезно настроить автоматическую очистку по расписанию.
Пример задачи, которая раз в неделю удаляет ревизии и транзиенты:
function wpreset_scheduled_database_cleanup() {
wpreset_delete_revisions();
wpreset_delete_expired_transients();
}
if (!wp_next_scheduled('wpreset_weekly_cleanup')) {
wp_schedule_event(time(), 'weekly', 'wpreset_weekly_cleanup');
}
add_action('wpreset_weekly_cleanup', 'wpreset_scheduled_database_cleanup');Такой подход позволит поддерживать базу в чистоте без вашего постоянного участия.
Выводы и рекомендации
Регулярная очистка базы данных WordPress от мусора и остатков удалённых плагинов критична для поддержания быстродействия сайта и его стабильности. Используйте проверенные плагины, такие как WP-Optimize и Clearfy Pro, для быстрого старта. Для более тонкой настройки и автоматизации применяйте собственные скрипты на PHP и SQL.
Не забывайте о резервных копиях перед очисткой, чтобы избежать потерь данных. Автоматизация через WP-Cron поможет поддерживать базу в оптимальном состоянии с минимальными усилиями.
Если хотите быстро восстановить сайт после неправильных действий с базой, обратите внимание на WPReset — отличный инструмент для разработчиков и администраторов WordPress.