Работа с базой данных WordPress — ключевой момент для поддержания скорости и стабильности сайта. Со временем база данных накапливает мусор: ревизии, спам-комментарии, транзиенты и прочие ненужные записи, которые замедляют работу сайта. В этой статье мы подробно разберём, как настроить автоматическую оптимизацию базы данных, используя готовые плагины и собственные функции с префиксом wpbook_.
Почему важна оптимизация базы данных WordPress
Каждый запрос к сайту WordPress взаимодействует с базой данных. Если база раздута лишней информацией, запросы выполняются дольше, а время загрузки страниц увеличивается. Оптимизация позволяет:
- Удалять устаревшие ревизии постов и страниц;
- Очищать спам и корзину комментариев;
- Удалять неиспользуемые транзиенты;
- Оптимизировать таблицы MySQL для освобождения места и ускорения работы.
Регулярное обслуживание базы данных — залог быстрого сайта и хорошего SEO.
Автоматическая оптимизация с помощью плагинов
Плагин WP-Optimize
Один из лучших бесплатных инструментов для оптимизации базы данных — WP-Optimize. Он позволяет очистить мусор, сжать таблицы и даже кэшировать сайт. В настройках плагина есть опция автоматической очистки по расписанию, что удобно для постоянного обслуживания.
После установки и активации плагина перейдите в раздел WP-Optimize » Database и отметьте следующие пункты:
- Удалить все ревизии постов;
- Удалить неиспользуемые черновики;
- Удалить спам и корзину комментариев;
- Удалить устаревшие транзиенты;
- Оптимизировать таблицы базы данных.
Далее в настройках включите автоматическую оптимизацию с нужной периодичностью (например, раз в неделю).
Плагин Advanced Database Cleaner
Если нужна более тонкая настройка, советую обратить внимание на Advanced Database Cleaner. Он позволяет настроить удаление записей по возрасту, а также удалять неиспользуемые таблицы от старых плагинов. Также есть возможность автоматизации задач через WP-Cron.
Создаем собственную функцию для автоматической очистки базы данных
Для более гибкого контроля можно написать свою функцию с префиксом wpbook_, которая будет запускаться автоматически по расписанию.
Пример функции, удаляющей ревизии и спам-комментарии:
function wpbook_optimize_database() { global $wpdb; // Удаляем ревизии постов $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'"); // Удаляем спам-комментарии $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam'"); // Удаляем комментарии в корзине $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'trash'"); // Оптимизируем таблицы $tables = $wpdb->get_results('SHOW TABLES', ARRAY_N); foreach ($tables as $table) { $wpdb->query("OPTIMIZE TABLE {$table[0]}"); }}Чтобы функция запускалась автоматически, добавим планировщик WP-Cron:
// Регистрируем событие при активации плагина или темы function wpbook_schedule_optimization() { if (!wp_next_scheduled('wpbook_optimize_database_hook')) { wp_schedule_event(time(), 'weekly', 'wpbook_optimize_database_hook'); }} add_action('wp', 'wpbook_schedule_optimization'); // Привязываем функцию к событию add_action('wpbook_optimize_database_hook', 'wpbook_optimize_database');Так наша функция будет запускаться автоматически раз в неделю и очищать базу от ненужных записей.
Дополнительные советы по оптимизации базы данных
Удаление устаревших транзиентов
Транзиенты — временные данные в базе, которые могут накапливаться и не удаляться автоматически. Их можно очистить так:
function wpbook_delete_expired_transients() { global $wpdb; $time = time(); $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_%' AND option_value < $time" );}Подключите эту функцию к расписанию, аналогично предыдущему примеру.
Оптимизация таблиц вручную через phpMyAdmin
Если есть доступ к phpMyAdmin, можно оптимизировать таблицы вручную. Для этого:
- Выделите все таблицы вашей базы данных WordPress.
- Внизу выберите действие «Оптимизировать таблицу».
- Нажмите OK и дождитесь завершения операции.
Эта операция освобождает место и улучшает производительность.
Резервное копирование базы перед оптимизацией
Перед любой оптимизацией настоятельно рекомендую создавать резервную копию базы данных. Это позволит избежать потери данных при ошибках. Для этого можно использовать плагин UpdraftPlus или экспортировать базу вручную через phpMyAdmin.