Создаем свой плагин для автоматической оптимизации базы данных WordPress

Оптимизация базы данных — важный аспект поддержания производительности WordPress-сайта. Со временем таблицы накапливают мусор: удалённые записи, ревизии, спам-комментарии и многое другое. В этой статье разберём, как создать собственный плагин, который автоматически очищает и оптимизирует базу данных, избавляя вас от ручной работы и помогая поддерживать сайт в отличном состоянии.

Почему нужна оптимизация базы данных в WordPress

При активной работе сайта в базе данных накапливаются:

  • Ревизии постов и страниц;
  • Автосохранения;
  • Удалённые записи в корзине;
  • Спам и мусорные комментарии;
  • Транзиенты, которые устарели;
  • Неиспользуемые метаданные.

Это всё увеличивает размер базы, замедляет запросы, что негативно сказывается на скорости загрузки и стабильности сайта. Оптимизация помогает удалить ненужные данные, сжать таблицы и улучшить общую производительность.

Обзор существующих решений и почему стоит сделать свой плагин

Существуют популярные плагины типа Clearfy, WP-Optimize и другие. Они функциональны и удобны, но иногда нужно более гибкое решение под конкретные задачи, либо хочется минималистичный плагин без излишних функций.

Создавая свой плагин, вы сможете точно настроить, какие таблицы и данные оптимизировать, как часто запускать очистку и интегрировать это с другими процессами сайта.

Структура плагина и основные хуки WordPress

Для начала создадим минимальный каркас плагина с названием wpblog_db_optimizer. Основные моменты:

  • Регистрация плагина;
  • Добавление задания в WP-Cron для регулярной оптимизации;
  • Функции очистки и оптимизации таблиц;
  • Админ-страница для ручного запуска и настройки.

Регистрация и активация плагина:

<?php
/*
Plugin Name: WPBlog DB Optimizer
Description: Автоматическая оптимизация базы данных WordPress.
Version: 1.0
Author: wp-blog.ru
*/

register_activation_hook(__FILE__, 'wpblog_db_optimizer_activation');
register_deactivation_hook(__FILE__, 'wpblog_db_optimizer_deactivation');

function wpblog_db_optimizer_activation() {
    if (!wp_next_scheduled('wpblog_db_optimizer_cron')) {
        wp_schedule_event(time(), 'daily', 'wpblog_db_optimizer_cron');
    }
}

function wpblog_db_optimizer_deactivation() {
    wp_clear_scheduled_hook('wpblog_db_optimizer_cron');
}

Здесь мы создаём ежедневное задание WP-Cron для запуска оптимизации.

Реализация функций очистки и оптимизации

Теперь реализуем основную функцию оптимизации. Для удаления мусорных данных используем стандартные запросы WP и прямые SQL-запросы для оптимизации таблиц.

add_action('wpblog_db_optimizer_cron', 'wpblog_db_optimizer_run');

function wpblog_db_optimizer_run() {
    global $wpdb;

    // Удаляем старые ревизии постов
    $wpdb->query("DELETE FROM {$wpdb->prefix}posts WHERE post_type = 'revision'");

    // Удаляем авто-сохранения
    $wpdb->query("DELETE FROM {$wpdb->prefix}posts WHERE post_status = 'auto-draft'");

    // Удаляем удалённые записи из корзины
    $wpdb->query("DELETE FROM {$wpdb->prefix}posts WHERE post_status = 'trash'");

    // Удаляем спам и мусорные комментарии
    $wpdb->query("DELETE FROM {$wpdb->prefix}comments WHERE comment_approved = 'spam' OR comment_approved = 'trash'");

    // Удаляем устаревшие транзиенты
    $transients = $wpdb->get_results("SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '_transient_%'", ARRAY_A);
    foreach ($transients as $transient) {
        $name = str_replace('_transient_', '', $transient['option_name']);
        if (get_transient($name) === false) {
            delete_transient($name);
        }
    }

    // Оптимизация таблиц
    $tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
    foreach ($tables as $table) {
        $wpdb->query('OPTIMIZE TABLE ' . $table[0]);
    }
}

Этот код удаляет основные виды мусорных данных и оптимизирует все таблицы базы данных, что помогает снизить её размер и повысить скорость.

Добавление админ-страницы для управления плагином

Чтобы сделать плагин удобнее, добавим страницу в админ-панель, где можно запускать оптимизацию вручную и видеть статус.

add_action('admin_menu', 'wpblog_db_optimizer_menu');

function wpblog_db_optimizer_menu() {
    add_management_page('Оптимизация Базы WPBlog', 'Оптимизация Базы WPBlog', 'manage_options', 'wpblog-db-optimizer', 'wpblog_db_optimizer_page');
}

function wpblog_db_optimizer_page() {
    if (isset($_POST['run_optimizer']) && check_admin_referer('wpblog_db_optimizer_action', 'wpblog_db_optimizer_nonce')) {
        wpblog_db_optimizer_run();
        echo '<div class="updated notice">Оптимизация базы данных выполнена успешно.</div>';
    }
    ?>
    <div class="wrap">
        <h1>Оптимизация базы данных WordPress</h1>
        <form method="post">
            <?php wp_nonce_field('wpblog_db_optimizer_action', 'wpblog_db_optimizer_nonce'); ?>
            <input type="submit" name="run_optimizer" class="button button-primary" value="Запустить оптимизацию"/>
        </form>
    </div>
    <?php
}

Теперь администратор может запустить очистку и оптимизацию базы вручную одним кликом.

Расширение функционала: планирование и уведомления

Для удобства можно добавить уведомления на e-mail после завершения оптимизации и возможность настраивать расписание из админки. Например, использовать дополнительные опции и формы для выбора периодичности.

Это позволит гибко управлять процессом и быть в курсе состояния базы без лишних усилий.

Пример отправки уведомления после оптимизации

function wpblog_db_optimizer_run() {
    global $wpdb;
    // ... код оптимизации ...

    // Отправка письма администратору
    $admin_email = get_option('admin_email');
    wp_mail($admin_email, 'Оптимизация базы данных завершена', 'База данных вашего сайта успешно оптимизирована.');
}

Выводы и рекомендации

Собственный плагин для автоматической оптимизации базы данных — мощный инструмент для поддержки производительности WordPress-сайта. Вы получаете полное управление процессом, возможность тонкой настройки и интеграции в свои рабочие процессы.

Если хотите расширить возможности, можно добавить очистку кэша, интеграцию с популярными плагинами, например, Clearfy, который уже содержит множество полезных оптимизаций.

Создайте свой плагин, экспериментируйте с кодом и делайте свой WordPress быстрее и стабильнее!

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как удалить проблемы с базами данных WordPress без плагинов
16.03.2026
Как добавить настройки в WordPress плагин: подробное руководство
10.11.2025
WooCommerce: как настроить автоматическое удаление неактивных заказов
27.05.2026
Как удалить старые ревизии записей в WordPress для оптимизации базы данных
14.01.2026
Как установить ограничения на сохранение данных через REST API в WordPress
28.02.2026
×
Делай сайт лучше!!

-20% на премиум темы и плагины

Использовать скидку ⋙