В процессе управления сайтом на WordPress часто возникает необходимость изменить структуру категорий, например, удалить записи из определённой категории, не удаляя сами записи. Это полезно, когда вы хотите очистить категорию или переназначить контент, сохранив при этом все посты в базе данных.
Почему важно уметь удалять записи из категории без удаления постов
Стандартное удаление категории в WordPress не удаляет записи, но записи остаются привязаны к категории по умолчанию (обычно «Без рубрики»). Иногда же требуется именно удалить связь записи с категорией, не затрагивая сам пост, чтобы избежать потери данных и сохранить SEO-позиции.
Удаление категории не всегда удобно, если вы хотите оставить категории для других записей. В таких случаях легче удалить категорию у записей выборочно. Это особенно актуально при массовом обновлении структуры сайта или при реорганизации контента.
Как удалить категорию у записей вручную через админку WordPress
Самый простой способ — через стандартный интерфейс. Для этого зайдите в раздел Записи → Все записи, отфильтруйте записи по нужной категории, выделите все записи, нажмите «Изменить» в списке массовых действий и снимите галочку с категории.
Однако этот метод неудобен при большом количестве записей, так как в админке можно одновременно редактировать ограниченное число записей (обычно 20).
Автоматизация удаления категории у записей с помощью кода
Для массового удаления можно использовать PHP-код, который выполнит эту задачу быстро и без ошибок. Ниже пример функции, которая удаляет категорию по её ID у всех записей, к которым она привязана.
function wpeducation_remove_category_from_posts($category_id) {
// Получаем все посты в категории
$posts = get_posts(array(
'category' => $category_id,
'numberposts' => -1,
'post_type' => 'post',
'post_status' => 'any',
));
foreach ($posts as $post) {
// Получаем текущие категории записи
$categories = wp_get_post_categories($post->ID);
// Удаляем нужную категорию
$new_categories = array_diff($categories, array($category_id));
// Обновляем категории записи
wp_set_post_categories($post->ID, $new_categories);
}
}Использование функции:
wpeducation_remove_category_from_posts(123); // где 123 — ID категории, которую нужно удалитьЭту функцию можно добавить в файл functions.php активной темы или выполнить через плагин для пользовательских функций.
Использование плагинов для массового удаления категорий
Если не хочется работать с кодом, можно воспользоваться плагинами с расширенными возможностями управления таксономиями:
- Bulk Move — позволяет переносить посты из одной категории в другую, но можно выбрать опцию удаления категории без удаления записей.
- Term Management Tools — удобный инструмент для массового редактирования и удаления категорий и тегов.
Эти плагины помогут быстро и безопасно провести массовые операции с категориями без риска потерять контент.
Практические советы и рекомендации
Перед массовым удалением категорий всегда делайте резервную копию базы данных. Это позволит восстановить данные в случае ошибки.
Если у вас на сайте активен плагин Clearfy Pro, он может помочь оптимизировать работу с таксономиями и кэшированием после изменений.
Также после удаления категорий рекомендуется обновить постоянные ссылки (Перейдите в Настройки → Постоянные ссылки и просто сохраните настройки заново), чтобы избежать ошибок 404 и сохранить SEO.
Как проверить результат
После удаления категории зайдите в админку → Записи и проверьте, что записи больше не принадлежат удалённой категории, но остались доступны.
Для проверки можно использовать запрос SQL:
SELECT * FROM wp_term_relationships WHERE term_taxonomy_id = (SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE term_id = 123 AND taxonomy = 'category');Если запрос не вернёт записей, значит категория успешно отсоединена.