В процессе разработки и поддержки сайтов на WordPress часто возникает необходимость изменить или удалить название таксономии — категории, метки или пользовательской таксономии. При этом важно сделать это максимально безопасно, чтобы не потерять связанные с таксономией записи и не нарушить работу сайта. В этой статье подробно разберём, как удалить или изменить название таксономии в WordPress без риска потери данных.
Что такое таксономии в WordPress и зачем менять их названия
Таксономии — это способ группировки и классификации записей и других типов контента. В ядре WordPress есть стандартные таксономии: категории (category) и метки (post_tag). Помимо них, разработчики часто создают пользовательские таксономии для более удобной структуры сайта.
Изменение названия таксономии может понадобиться, если:
- нужно исправить ошибку в названии или слагe;
- изменить структуру сайта для SEO или удобства;
- удалить устаревшую или ненужную таксономию, заменив её на новую;
- переход на другую систему классификации без потери существующих данных.
Важно помнить, что таксономии связаны с терминами и записями, поэтому изменение должно быть аккуратным.
Как безопасно изменить название таксономии (слаг)
Изменение слага (slug) таксономии — самый распространённый вариант, если нужно поменять URL или внутреннее имя.
Для изменения слага пользовательской таксономии необходимо:
- найти функцию
register_taxonomyв вашем плагине или файле темы; - изменить параметр
$taxonomy(второй аргумент) на новый слаг; - обновить все вызовы и фильтры, где используется старый слаг;
- пересохранить постоянные ссылки (Permalinks) в админке WordPress, чтобы обновить правила перезаписи.
Но просто поменять слаг приведёт к потере связи с уже существующими терминами и записями, так как WordPress хранит связи по слагу таксономии. Чтобы избежать этого, нужно перенести термины на новую таксономию.
Пример кода для переноса терминов с одной таксономии на другую
function clearfy_transfer_terms($old_tax, $new_tax) {
$terms = get_terms(array(
'taxonomy' => $old_tax,
'hide_empty' => false,
));
if (is_wp_error($terms) || empty($terms)) {
return;
}
foreach ($terms as $term) {
// Проверяем, существует ли термин в новой таксономии
$new_term = term_exists($term->slug, $new_tax);
if (!$new_term) {
// Создаем термин в новой таксономии
wp_insert_term($term->name, $new_tax, array('slug' => $term->slug));
}
// Получаем все посты с этим термином
$posts = get_posts(array(
'post_type' => 'any',
'numberposts' => -1,
'tax_query' => array(
array(
'taxonomy' => $old_tax,
'field' => 'slug',
'terms' => $term->slug,
),
),
));
foreach ($posts as $post) {
// Добавляем новый термин
wp_set_object_terms($post->ID, $term->slug, $new_tax, true);
// Удаляем старый термин
wp_remove_object_terms($post->ID, $term->slug, $old_tax);
}
}
}
// Использование функции:
// clearfy_transfer_terms('old_taxonomy_slug', 'new_taxonomy_slug');
Этот код переносит все термины и связанные с ними записи со старой таксономии на новую, сохраняя структуру данных.
Как удалить таксономию без потери данных
Прямое удаление таксономии из ядра WordPress невозможно без потери данных, но можно выполнить следующие шаги для безопасного удаления:
- Перенести все термины и записи в другую таксономию с помощью функции, приведённой выше.
- Отключить регистрацию старой таксономии, удалив или закомментировав код
register_taxonomy. - Проверить, что все записи корректно отображаются с новой таксономией.
- Удалить термины старой таксономии из базы данных через SQL или с помощью плагинов.
Удаление таксономии через SQL требует осторожности. Например, можно удалить связи с постами и сами термины:
DELETE FROM wp_term_relationships WHERE term_taxonomy_id IN (
SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE taxonomy = 'old_taxonomy_slug'
);
DELETE FROM wp_term_taxonomy WHERE taxonomy = 'old_taxonomy_slug';
DELETE FROM wp_terms WHERE term_id NOT IN (
SELECT term_id FROM wp_term_taxonomy
);
Перед такими действиями обязательно сделайте резервную копию базы данных.
Использование плагина Clearfy Pro для работы с таксономиями
Если вы используете плагин Clearfy Pro, в нём есть инструменты для управления таксономиями и оптимизации сайта.
Плагин позволяет:
- управлять регистрацией таксономий из админки без правки кода;
- отключать ненужные таксономии для повышения производительности;
- очищать базу данных от неиспользуемых терминов и таксономий;
- безопасно изменять слаги таксономий с помощью встроенных функций.
Это значительно упрощает процесс и снижает риски ошибок при ручной работе.
Практические советы и рекомендации
Для успешного изменения или удаления таксономий рекомендуем:
- всегда делать резервные копии сайта и базы данных перед изменениями;
- тестировать изменения на локальной копии или тестовом сервере;
- следить за URL-структурой и использовать редиректы для старых ссылок;
- использовать готовые решения и плагины, если не уверены в коде;
- проводить аудит сайта после изменений, чтобы выявить возможные ошибки.
Соблюдение этих правил поможет сохранить целостность данных и избежать проблем с SEO и функционалом.
Заключение
Изменение или удаление названия таксономии в WordPress — задача технически несложная, но требующая аккуратности и понимания структуры данных. Использование функций для переноса терминов, тщательное тестирование и резервные копии — залог успешной работы. Для удобства можно применять плагины, такие как Clearfy Pro, которые автоматизируют многие процессы.
Если требуется помощь с оптимизацией и управлением таксономиями, рекомендуем ознакомиться с инструментами на WPShop.ru.