wpcorp.ru wordpress WP Corp

Как удалить таксономию в WordPress: практическое руководство

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

Что такое таксономия в WordPress и зачем её удалять

Таксономия — это способ группировки контента. В WordPress по умолчанию есть две таксономии: категории (category) и метки (post_tag). Но разработчики могут создавать свои таксономии, например, «Жанры» для фильмов или «Проекты» для портфолио.

Удаление таксономии может понадобиться, если:

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

Просто отключить регистрацию таксономии недостаточно, так как в базе останутся связи term_taxonomy и term_relationships, которые могут вызывать ошибки и увеличивать размер базы.

Как удалить таксономию: базовый метод

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

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

Удаление данных таксономии из базы данных

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

Для этого можно использовать код с функциями WordPress. Создадим функцию wpcorp_remove_taxonomy, которая удалит таксономию и все её термины:

function wpcorp_remove_taxonomy( $taxonomy ) {
    if ( ! taxonomy_exists( $taxonomy ) ) {
        return false; // Таксономия не зарегистрирована
    }

    // Получаем все термины таксономии
    $terms = get_terms( array(
        'taxonomy' => $taxonomy,
        'hide_empty' => false,
    ) );

    // Удаляем связи терминов с записями
    if ( ! is_wp_error( $terms ) ) {
        foreach ( $terms as $term ) {
            wp_remove_object_terms( 0, $term->term_id, $taxonomy );
        }
    }

    global $wpdb;

    // Удаляем термины из таблиц term_taxonomy и term_relationships
    $wpdb->query( $wpdb->prepare(
        "DELETE tt, tr, t FROM {$wpdb->term_taxonomy} tt
         LEFT JOIN {$wpdb->term_relationships} tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
         LEFT JOIN {$wpdb->terms} t ON t.term_id = tt.term_id
         WHERE tt.taxonomy = %s",
         $taxonomy
    ) );

    // Удаляем регистрацию таксономии
    unregister_taxonomy( $taxonomy );

    return true;
}

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

Как использовать функцию удаления таксономии

Добавьте функцию в файл functions.php вашей темы или в отдельный плагин. Вызовите её, передав имя таксономии:

wpcorp_remove_taxonomy( 'my_custom_taxonomy' );

Будьте осторожны: эта операция необратима, поэтому сделайте бэкап базы данных перед удалением.

Альтернативный способ: плагин WPClearfy для очистки таксономий

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

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

Как избежать ошибок после удаления таксономии

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

Чтобы избежать проблем, выполните следующие шаги:

  • Проверьте шаблоны тем на наличие вызовов get_terms, wp_get_object_terms и других функций с удалённой таксономией и удалите их.
  • Обновите настройки плагинов, если они используют таксономию.
  • Очистите кэш сайта и браузера.
  • Проверьте ошибки в консоли и логе сервера.

Если ошибки сохраняются, временно включите отладку WordPress, добавив в wp-config.php:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

Анализируйте файл wp-content/debug.log для поиска проблем.

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

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

  1. Удалить регистрацию таксономии (в коде темы/плагина или деактивировать плагин).
  2. Удалить все связанные термины и связи из базы данных (например, с помощью функции wpcorp_remove_taxonomy).
  3. Проверить и поправить шаблоны и плагины, чтобы они не использовали удалённую таксономию.
  4. Очистить кэш и проверить сайт на ошибки.

Для удобства и безопасности можно использовать профессиональные плагины очистки, например, Clearfy Pro — подробнее на сайте WPSHOP.

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

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙