С течением времени база данных WordPress накапливает большое количество устаревших, неиспользуемых и временных данных. Это замедляет работу сайта и увеличивает размер бэкапов. В этой статье мы подробно разберем, как оптимизировать базу данных, удаляя старые ревизии, автосохранения, спам, транзиенты и другие ненужные данные. Вы узнаете, как сделать это с помощью кода и популярных плагинов.
Почему важно оптимизировать базу данных WordPress
База данных — это сердце любого сайта на WordPress. Со временем в таблицах накапливаются:
- Ревизии постов — каждое сохранение создает новую версию;
- Автосохранения — временные копии записей;
- Комментарии в статусе «спам» или «ожидающие модерации»;
- Транзиенты — временные кешированные данные, которые не всегда очищаются корректно;
- Остатки от удаленных плагинов и тем.
Все это создает дополнительную нагрузку на базу данных, увеличивает время отклика сайта и размер резервных копий. Регулярная очистка значительно улучшит производительность и стабильность.
Как просмотреть размер и структуру базы данных
Перед началом оптимизации полезно понять, какие таблицы занимают больше всего места. Для этого можно воспользоваться phpMyAdmin или плагином Clearfy Pro, который показывает статистику и позволяет управлять базой прямо из админ-панели.
В phpMyAdmin достаточно выбрать базу, и в колонке «Размер» увидеть нагрузку по таблицам. Чаще всего «wp_postmeta», «wp_posts» и «wp_options» содержат много «мусорных» данных.
Удаление ревизий и автосохранений с помощью кода
Ревизии и автосохранения — популярная проблема. Их можно удалить вручную или с помощью SQL-запросов. Вот пример функции для очистки ревизий, которую можно добавить в файл functions.php вашей темы или в плагин:
function wplesson_delete_post_revisions() {
global $wpdb;
$revisions = $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
return $revisions;
}
// Запускаем функцию один раз
wplesson_delete_post_revisions();Эта функция удаляет все ревизии из таблицы wp_posts. После выполнения запросов можно проверить размер таблицы и убедиться, что она уменьшилась.
Для удаления автосохранений можно использовать похожий запрос, например, удаляя записи с типом autosave:
function wplesson_delete_autosaves() {
global $wpdb;
$autosaves = $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'autosave'");
return $autosaves;
}
wplesson_delete_autosaves();Удаление спама и мусорных комментариев
Комментарии в статусе «спам» и «ожидающие модерации» могут накапливаться и занимать место. Их можно удалить через админку, но при большом количестве это неудобно. Давайте сделаем это через код:
function wplesson_delete_spam_comments() {
global $wpdb;
$spam = $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam'");
return $spam;
}
function wplesson_delete_pending_comments() {
global $wpdb;
$pending = $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = '0'");
return $pending;
}
wplesson_delete_spam_comments();
wplesson_delete_pending_comments();<После их выполнения база комментариев станет чище и быстрее работать.
Очистка транзиентов
Транзиенты — временные данные, которые сохраняются в базе данных для кеширования. Иногда они не очищаются автоматически, и база разрастается. Для их удаления можно использовать следующий код:
function wplesson_delete_all_transients() {
global $wpdb;
$transients = $wpdb->query(
"DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_%'"
);
return $transients;
}
wplesson_delete_all_transients();<Этот запрос удалит все транзиенты, после чего WordPress будет заново их создавать по мере необходимости.
Плагины для автоматической оптимизации базы данных
Если вы не хотите вручную писать код, воспользуйтесь проверенными плагинами, которые делают очистку и оптимизацию безопасно и удобно:
- Clearfy Pro — профессиональный инструмент с множеством оптимизаций, включая очистку ревизий, транзиентов, комментариев и многое другое.
- WP-Optimize — популярный бесплатный плагин для очистки и оптимизации базы данных, удаления мусора и сжатия таблиц.
- Advanced Database Cleaner — позволяет детально управлять очисткой базы, планировать задачи и мониторить состояние.
Советы по регулярной оптимизации базы данных
Чтобы база данных не разрасталась, советую регулярно выполнять следующие действия:
- Очищать ревизии и автосохранения, либо ограничивать их количество через
WP_POST_REVISIONSвwp-config.php. - Удалять спам и неактивные комментарии.
- Очищать транзиенты, особенно если часто используете плагины с кешированием.
- Проводить оптимизацию таблиц (через phpMyAdmin или плагины) для сжатия и дефрагментации.
- Использовать Clearfy Pro для комплексного решения задач оптимизации.
Пример комплексной функции для оптимизации базы данных WordPress
Ниже приведен пример функции, которая объединяет вышеописанные действия и может запускаться по расписанию или вручную:
function wplesson_optimize_database() {
global $wpdb;
// Удаляем ревизии
$wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
// Удаляем автосохранения
$wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'autosave'");
// Удаляем спам комментарии
$wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam'");
// Удаляем ожидающие модерации комментарии
$wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = '0'");
// Очищаем транзиенты
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_%'");
// Оптимизируем таблицы
$tables = [$wpdb->posts, $wpdb->postmeta, $wpdb->comments, $wpdb->commentmeta, $wpdb->options];
foreach($tables as $table) {
$wpdb->query("OPTIMIZE TABLE {$table}");
}
}
// Запуск функции
wplesson_optimize_database();Эта функция поможет держать базу данных в порядке и улучшит скорость сайта.
Заключение
Оптимизация базы данных — обязательная часть поддержки любого сайта на WordPress. Регулярное удаление старых ревизий, автосохранений, спама и транзиентов не только уменьшит размер базы, но и ускорит работу сайта, улучшит пользовательский опыт и облегчит резервное копирование. Используйте приведенные примеры кода, или удобные плагины, например Clearfy Pro, чтобы автоматизировать и упростить этот процесс.