В 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 для поиска проблем.
Выводы и рекомендации
Удаление таксономии — это не просто убрать регистрацию, а комплексная задача по очистке базы и кода сайта. Правильный порядок действий:
- Удалить регистрацию таксономии (в коде темы/плагина или деактивировать плагин).
- Удалить все связанные термины и связи из базы данных (например, с помощью функции
wpcorp_remove_taxonomy). - Проверить и поправить шаблоны и плагины, чтобы они не использовали удалённую таксономию.
- Очистить кэш и проверить сайт на ошибки.
Для удобства и безопасности можно использовать профессиональные плагины очистки, например, Clearfy Pro — подробнее на сайте WPSHOP.
Следуя этим рекомендациям, вы сможете безопасно и без проблем удалить таксономию из WordPress и оптимизировать работу сайта.