Как удалить зависшие варианты рубрик в WordPress: практическое руководство

В WordPress иногда возникают ситуации, когда в базе данных остаются зависшие варианты рубрик (терминов), которые не связаны с какими-либо записями или таксономиями. Такие варианты могут замедлять работу сайта и создавать ошибки, особенно если используется сложная структура категорий и таксономий. В этой статье подробно разберем, как найти и удалить такие зависшие варианты рубрик, используя SQL-запросы и PHP-код с применением встроенных функций WordPress.

Что такое зависшие варианты рубрик и почему их нужно удалять

Зависшие варианты рубрик — это записи в таблице wp_terms, которые уже не связаны с таксономиями (wp_term_taxonomy) или не используются в записях (wp_term_relationships), но по-прежнему занимают место в базе данных. Они появляются, например, после удаления записей или таксономий некорректным способом, либо после удаления плагинов, которые работали с кастомными таксономиями.

Причины удаления:

  • Ускорение запросов к базе данных
  • Уменьшение размера базы данных
  • Предотвращение ошибок и конфликтов при работе с таксономиями

Важно периодически проверять и очищать базу, особенно на крупных проектах с большим количеством контента.

Как найти зависшие варианты рубрик с помощью SQL-запроса

Для поиска таких вариантов удобно использовать запрос, который находит записи в wp_terms, не имеющие связей в таблице wp_term_taxonomy. Вот пример запроса:

SELECT t.term_id, t.name FROM wp_terms t
LEFT JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id
WHERE tt.term_id IS NULL;

Этот запрос вернет все термины, у которых нет связанных таксономий. При этом мы можем дополнительно проверить, что эти термины не связаны с записями, но если нет таксономий — скорее всего, они и не используются.

Если вы используете префикс таблиц отличный от wp_, замените его в запросе.

Как безопасно удалить найденные зависшие варианты рубрик через PHP

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

Ниже пример функции, которую можно добавить в файл functions.php вашей темы или в отдельный плагин. Она найдет и удалит все зависшие варианты рубрик.

function wpreg_delete_orphan_terms() {
    global $wpdb;
    $query = "SELECT t.term_id FROM {$wpdb->terms} t
        LEFT JOIN {$wpdb->term_taxonomy} tt ON t.term_id = tt.term_id
        WHERE tt.term_id IS NULL";
    $orphan_terms = $wpdb->get_col($query);

    if (empty($orphan_terms)) {
        return 'Нет зависших вариантов рубрик для удаления.';
    }

    foreach ($orphan_terms as $term_id) {
        wp_delete_term($term_id, 'category'); // 'category' можно заменить на нужную таксономию или удалить для всех
    }

    return count($orphan_terms) . ' зависших вариантов рубрик удалено.';
}

Функция сначала получает ID всех терминов без таксономий, затем удаляет их с помощью wp_delete_term, что гарантирует удаление связанных записей и соблюдение целостности данных.

Чтобы вызвать функцию и вывести результат, можно добавить следующий код, например, в шаблон админки или через AJAX:

echo wpreg_delete_orphan_terms();

Дополнительные советы по работе с таксономиями и рубриками

Использование плагина Clearfy Pro для автоматической очистки базы

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

Создание резервной копии перед очисткой

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

Проверка после удаления

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

Заключение

Удаление зависших вариантов рубрик — важный этап в поддержании здоровья базы данных WordPress. Используя приведенные SQL-запросы и функции PHP, вы сможете быстро найти и безопасно удалить ненужные термины, что повысит производительность сайта и уменьшит вероятность ошибок. Для удобства автоматизации можно использовать проверенные плагины с поддержкой оптимизации базы данных.

Руководство по созданию и использованию REST API в WordPress
23.11.2025
Как избежать проблем с конфликтами между плагинами WordPress
30.01.2026
Как правильно отключить и удалить плагины в WordPress без оставшихся данных
05.01.2026
Как сделать удалённый вызов REST API в WordPress с авторизацией
16.01.2026
Как отключить AJAX-перезагрузку в WordPress без потери производительности
06.02.2026