База данных WordPress со временем накапливает мусорные записи: ревизии, спам-комментарии, устаревшие транзиенты и многое другое. Это приводит к увеличению размера базы и замедлению работы сайта. В этой статье расскажем, как сделать автоматическую оптимизацию базы данных WordPress без использования плагинов, чтобы поддерживать сайт в отличном состоянии и повысить скорость загрузки.
Почему важна оптимизация базы данных WordPress
Оптимизация базы данных позволяет удалять ненужные данные и реорганизовывать таблицы для более эффективного хранения. Чем меньше мусора — тем быстрее запросы, меньше нагрузка на сервер и лучше пользовательский опыт. Многие плагину делают это вручную или по расписанию, но можно реализовать автоматическую очистку средствами самого WordPress.
Основные причины для оптимизации:
- Удаление ревизий записей, которые занимают много места.
- Удаление спам-комментариев и мусорных данных.
- Очистка устаревших транзиентов (временных данных).
- Оптимизация таблиц базы данных MySQL.
Если не очищать базу, с ростом сайта и числом контента скорость работы может заметно снижаться.
Как работает оптимизация базы данных в WordPress
Оптимизация базы данных состоит из двух этапов:
- Удаление ненужных записей. Это SQL-запросы, удаляющие ревизии, спам, устаревшие транзиенты.
- Оптимизация таблиц. Команда OPTIMIZE TABLE в MySQL восстанавливает физический порядок и освобождает неиспользуемое пространство.
Вручную запускать эти операции неудобно, лучше автоматизировать процесс с помощью хука WordPress.
Создаем функцию автоматической оптимизации базы данных в WordPress
Добавим функцию cyrtolat_optimize_database, которая выполнит все основные операции.
function cyrtolat_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'");
// Удаляем устаревшие транзиенты
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_%' AND option_value < UNIX_TIMESTAMP() - 3600");
// Оптимизируем все таблицы базы данных
$tables = $wpdb->get_col('SHOW TABLES');
foreach ($tables as $table) {
$wpdb->query("OPTIMIZE TABLE $table");
}
}
Эта функция выполняет удаление ревизий, спам и треш-комментариев, очищает устаревшие транзиенты и оптимизирует все таблицы.
Автоматизация запуска оптимизации по расписанию
Для регулярной автоматической оптимизации добавим событие в планировщик WordPress (WP-Cron). Например, запускать раз в неделю.
function cyrtolat_schedule_database_optimization() {
if (!wp_next_scheduled('cyrtolat_weekly_database_optimization')) {
wp_schedule_event(time(), 'weekly', 'cyrtolat_weekly_database_optimization');
}
}
add_action('wp', 'cyrtolat_schedule_database_optimization');
add_action('cyrtolat_weekly_database_optimization', 'cyrtolat_optimize_database');
Этот код проверяет, запланировано ли событие, и если нет — создает его. В результате функция cyrtolat_optimize_database будет запускаться автоматически каждую неделю.
Ручной запуск оптимизации из админки WordPress
Для удобства можно добавить кнопку в админ-панель, чтобы запускать оптимизацию вручную. Добавим пункт меню и страницу с кнопкой:
function cyrtolat_add_admin_menu() {
add_management_page(
'Оптимизация базы данных',
'Оптимизация БД',
'manage_options',
'cyrtolat-db-optimize',
'cyrtolat_render_admin_page'
);
}
add_action('admin_menu', 'cyrtolat_add_admin_menu');
function cyrtolat_render_admin_page() {
if (isset($_POST['cyrtolat_optimize_submit'])) {
check_admin_referer('cyrtolat_optimize_nonce');
cyrtolat_optimize_database();
echo '<div class="updated notice">Оптимизация базы данных выполнена успешно.</div>';
}
echo '<h1>Оптимизация базы данных WordPress</h1>';
echo '<form method="post">';
wp_nonce_field('cyrtolat_optimize_nonce');
echo '<p><input type="submit" name="cyrtolat_optimize_submit" class="button button-primary" value="Оптимизировать сейчас" /></p>';
echo '</form>';
}
Теперь в разделе Инструменты > Оптимизация БД появится кнопка для запуска оптимизации в любое время.
Полезные плагины для оптимизации базы данных WordPress
Хотя мы реализовали оптимизацию без плагинов, иногда удобнее использовать готовые решения. Вот несколько популярных плагинов:
- Clearfy Pro — набор оптимизаций и очисток базы с удобным интерфейсом.
- WPRemark — плагин с функциями очистки и оптимизации базы данных, а также управления кешем.
Если не хотите писать код — эти плагины помогут быстро настроить очистку и оптимизацию базы.
Советы по безопасности и тестированию
Перед внедрением оптимизации базы данных обязательно сделайте резервную копию. Особенно если используете собственные запросы к базе — ошибка может привести к потере данных.
Тестируйте код на тестовом сервере или локально, чтобы убедиться, что удаляются только ненужные записи. Также проверяйте, что оптимизация не вызывает ошибок и нагрузку на сервер.
Заключение
Автоматическая оптимизация базы данных WordPress без плагинов — эффективный способ поддерживать сайт в порядке и улучшать скорость. С помощью функции cyrtolat_optimize_database и планировщика WP-Cron можно запускать очистку и оптимизацию по расписанию. Для удобства добавьте кнопку в админку для ручного запуска. Если вы предпочитаете готовые решения, обратите внимание на плагины Clearfy Pro и WPRemark.