Как удалить неиспользуемые таблицы базы данных WordPress

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

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

При установке плагинов и тем создаются свои таблицы для хранения данных. Когда плагин удаляется некорректно или не реализует функцию чистки, таблицы остаются. Это приводит к:

  • избыточному использованию дискового пространства;
  • увеличению времени резервного копирования;
  • усложнению обслуживания базы данных;
  • потенциальным проблемам с безопасностью.
Понимание причины поможет правильно подходить к удалению и не навредить работе сайта.

Как найти неиспользуемые таблицы WordPress

Сначала необходимо получить список всех таблиц в базе данных. Обычно таблицы WordPress имеют префикс wp_, но он может отличаться. Для получения списка используйте SQL-запрос:

SHOW TABLES LIKE 'wp_%';

Далее нужно сверить полученный список с официальным списком таблиц WordPress и таблиц, которые создает активный плагин или тема. Например, стандартные таблицы:

  • wp_posts
  • wp_users
  • wp_usermeta
  • wp_options
  • wp_postmeta
  • wp_terms
  • wp_term_taxonomy
  • wp_term_relationships
  • wp_comments
  • wp_commentmeta

Все остальные таблицы требуют проверки. Для этого можно:

  • просмотреть документацию плагинов;
  • выполнить поиск по названию таблицы в интернете;
  • проверить, есть ли активные плагины, которые могут их использовать.

Пример: скрипт для получения списка таблиц и фильтрации стандартных

function wpmy_get_unused_tables($wpdb) {
    $all_tables = $wpdb->get_col('SHOW TABLES LIKE "' . $wpdb->prefix . '%"');
    $core_tables = [
        $wpdb->prefix . 'posts',
        $wpdb->prefix . 'users',
        $wpdb->prefix . 'usermeta',
        $wpdb->prefix . 'options',
        $wpdb->prefix . 'postmeta',
        $wpdb->prefix . 'terms',
        $wpdb->prefix . 'term_taxonomy',
        $wpdb->prefix . 'term_relationships',
        $wpdb->prefix . 'comments',
        $wpdb->prefix . 'commentmeta'
    ];
    $unused = array_diff($all_tables, $core_tables);
    return $unused;
}

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

Как безопасно удалить неиспользуемые таблицы из базы данных

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

Удалять таблицы нужно только после уверенности, что они не используются. Для удаления воспользуемся следующим кодом:

function wpmy_delete_tables($wpdb, $tables) {
    foreach ($tables as $table) {
        $table_name = esc_sql($table);
        $wpdb->query("DROP TABLE IF EXISTS $table_name");
    }
}

Вызывать функцию нужно так:

$unused_tables = wpmy_get_unused_tables($wpdb);
wpmy_delete_tables($wpdb, $unused_tables);

Этот код удалит все таблицы из массива $unused_tables. Но рекомендуется перед этим вручную проверить каждую таблицу — например, через phpMyAdmin.

Рекомендации по безопасности и оптимизации

  • Не удаляйте таблицы, если не уверены в их назначении.
  • При наличии доступа к серверу и консоли MySQL используйте интерактивные инструменты для проверки.
  • Используйте плагин Clearfy Pro, который помогает оптимизировать базу данных и удалять мусорные записи, иногда включая очистку неиспользуемых таблиц. Подробнее: Clearfy Pro на WPSHOP.
  • Рассмотрите возможность автоматизации удаления устаревших таблиц с помощью WP-Cron, если вы уверены в безопасности действий.

Пример интеграции удаления таблиц в плагин

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

add_action('admin_menu', 'wpmy_tables_cleanup_menu');
function wpmy_tables_cleanup_menu() {
    add_menu_page('Очистка таблиц', 'Очистка таблиц', 'manage_options', 'wpmy-tables-cleanup', 'wpmy_tables_cleanup_page');
}

function wpmy_tables_cleanup_page() {
    global $wpdb;
    if (isset($_POST['delete_tables']) && check_admin_referer('wpmy_delete_tables_action', 'wpmy_nonce_field')) {
        $tables_to_delete = array_map('sanitize_text_field', $_POST['tables']);
        wpmy_delete_tables($wpdb, $tables_to_delete);
        echo '<div class="updated">Таблицы удалены.</div>';
    }

    $unused_tables = wpmy_get_unused_tables($wpdb);
    echo '<form method="post">';
    wp_nonce_field('wpmy_delete_tables_action', 'wpmy_nonce_field');
    echo '<h2>Неиспользуемые таблицы</h2><ul>';
    foreach ($unused_tables as $table) {
        echo "<li><label><input type='checkbox' name='tables[]' value='$table' /> $table</label></li>";
    }
    echo '</ul><input type="submit" name="delete_tables" value="Удалить выбранные таблицы" class="button button-primary" /></form>';
}

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

Выводы и полезные советы

Удаление неиспользуемых таблиц — эффективный способ поддерживать базу данных WordPress в чистоте и порядке. Главное — подходить к этому ответственно, делать резервные копии и тщательно проверять каждую таблицу.

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

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

WooCommerce: правильное отображение вариаций товаров — практическое руководство
17.05.2026
Как установить лимит на количество сообщений в формах WordPress
31.03.2026
Автоматическое удаление отсутствующих товаров в WooCommerce
10.05.2026
Как удалить вредоносные плагины в WordPress: пошаговое руководство
13.11.2025
WooCommerce: автоматическое обновление статуса заказа после отправки
21.06.2026