В процессе эксплуатации WordPress база данных со временем накапливает множество устаревших, неиспользуемых и временных данных: ревизии записей, автосохранения, спам-комментарии, транзиенты и многое другое. Это влияет на скорость работы сайта и увеличивает нагрузку на сервер. Обычно для решения этой задачи используют плагины, например, Clearfy Pro или WPOptimize, но иногда важно уметь удалить и оптимизировать базу данных вручную, без сторонних решений. В этой статье рассмотрим, как это сделать с помощью SQL-запросов и PHP-кода, а также расскажем, какие данные стоит удалять и как безопасно это выполнять.
Почему важно удалять ненужные данные из базы WordPress
Каждое сохранённое изменение записи в WordPress создаёт ревизию, которая хранится в таблице wp_posts. За месяц на активном сайте может накопиться сотни и тысячи ревизий, что замедляет запросы и увеличивает размер базы. Также в базе накапливаются:
- автосохранения (autosaves);
- спам и мусорные комментарии;
- транзиенты (временные кэшированные данные);
- старые сессии пользователей;
- записи в таблицах плагинов, которые уже не используются.
Удаление этих данных позволяет уменьшить размер базы, ускорить работу WP_Query и снизить нагрузку на сервер, особенно при использовании хостинга с ограниченными ресурсами.
Удаление ревизий и автосохранений через SQL
Ревизии в WordPress — это записи с типом revision в таблице wp_posts. Для удаления всех ревизий можно выполнить SQL-запрос:
DELETE FROM wp_posts WHERE post_type = 'revision';Чтобы удалить автосохранения, тоже хранящиеся в таблице wp_posts с типом autosave (в редких случаях), можно использовать похожий запрос, но чаще автосохранения сопровождаются статусом auto-draft:
DELETE FROM wp_posts WHERE post_status = 'auto-draft';Перед удалением всегда делайте резервную копию базы данных. Для этого можно использовать встроенные средства хостинга или команду в терминале:
mysqldump -u username -p database_name > backup.sqlУдаление спам-комментариев и мусора
Комментарии со статусом spam и trash не нужны на рабочем сайте, они только занимают место. Для их удаления используйте следующие запросы:
DELETE FROM wp_comments WHERE comment_approved = 'spam';
DELETE FROM wp_comments WHERE comment_approved = 'trash';Кроме того, можно удалить связанные метаданные:
DELETE pm FROM wp_commentmeta pm
LEFT JOIN wp_comments wc ON pm.comment_id = wc.comment_ID
WHERE wc.comment_ID IS NULL;Удаление транзиентов из базы данных
Транзиенты — это временные записи в таблице wp_options, которые используются для кэширования. Они хранятся с префиксом _transient_ или _transient_timeout_. Чтобы удалить все транзиенты, выполните запрос:
DELETE FROM wp_options WHERE option_name LIKE '_transient_%';Иногда полезно удалять только просроченные транзиенты, но этот запрос удалит их все, что позволит очистить кэш полностью.
Оптимизация таблиц базы данных
После удаления большого количества данных рекомендуется оптимизировать таблицы для уменьшения занимаемого места и повышения производительности. Для этого используйте команду:
OPTIMIZE TABLE wp_posts, wp_comments, wp_options;Можно оптимизировать все таблицы базы командой:
mysqlcheck -o database_name -u username -pПример PHP-функции для удаления ревизий и оптимизации базы
Ниже пример простой функции с префиксом wpacademy_, которая удаляет ревизии и оптимизирует таблицы. Её можно добавить в файл functions.php вашей темы или в кастомный плагин:
function wpacademy_delete_revisions_and_optimize() {
global $wpdb;
// Удаляем ревизии
$wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
// Оптимизируем таблицы
$tables = [
$wpdb->posts,
$wpdb->comments,
$wpdb->options
];
foreach ($tables as $table) {
$wpdb->query("OPTIMIZE TABLE {$table}");
}
}Вы можете вызвать эту функцию один раз через админку (например, через action hook) или вручную, чтобы почистить базу.
Использование WPCommunity для мониторинга базы
Если на вашем сайте работает форум на базе WPCommunity, мониторинг состояния базы особенно важен. Регулярное удаление мусора поможет избежать замедлений и ошибок. Для автоматизации можно настроить Cron-задачи, вызывающие функции очистки. Также советуем использовать логи и уведомления о состоянии базы.
Рекомендации по безопасности и резервному копированию
При работе с базой данных без плагинов всегда соблюдайте следующие правила:
- Перед любыми изменениями делайте полную резервную копию базы.
- Проверяйте SQL-запросы в тестовой среде.
- Используйте транзакции или откаты, если это возможно.
- Не удаляйте данные из таблиц, незнакомых вам, чтобы не нарушить работу сайта.
Если хотите упростить себе задачу, обратите внимание на Clearfy Pro — мощный инструмент для оптимизации и очистки базы без риска.