В WordPress часто возникает задача удалить связь записей с определённой категорией, не удаляя сами записи. Например, если вы хотите убрать устаревший раздел из меню категорий, но не потерять контент, связанный с этой категорией. В этой статье мы подробно рассмотрим, как это сделать программно, а также с помощью популярных плагинов.
Почему важно уметь удалять записи из категории без удаления записей
Категории в WordPress — это таксономии, которые помогают структурировать контент. Иногда категории становятся неактуальными или дублируют друг друга, и требуется очистить их от записей, чтобы улучшить навигацию и SEO.
Удалять записи целиком — не всегда выход, особенно если они важны для сайта. Поэтому правильнее снять связь с категорией, оставив записи в базе.
Как удалить записи из категории через панель администратора
Самый простой способ — массовое редактирование записей в админке:
- Перейдите в «Записи» → «Все записи».
- Отфильтруйте записи по нужной категории.
- Выделите все записи на странице.
- Выберите действие «Изменить» и нажмите «Применить».
- В разделе категорий снимите галочку с нужной категории и сохраните изменения.
Недостаток: массовое редактирование работает только с текущей страницей записей, если записей много — придётся повторять несколько раз.
Удаление связи записей с категорией с помощью SQL-запроса
Для быстрого удаления всех связей можно использовать SQL. Это особенно удобно при большом объёме записей.
В WordPress связи между записями и категориями хранятся в таблице wp_term_relationships. Чтобы удалить все связи с категорией с ID = 15, выполните запрос:
DELETE FROM wp_term_relationships WHERE term_taxonomy_id = 15;
Важно: перед выполнением SQL-запросов сделайте резервную копию базы данных!
Программное удаление категории из записей через WP24-функцию
Если нужно автоматизировать процесс и сделать его частью темы или плагина, можно написать функцию, которая снимет категорию с записей.
Пример функции для удаления категории с ID = 15 со всех записей:
function wp24_remove_category_from_posts($category_id) {
$args = [
'category' => $category_id,
'posts_per_page' => -1,
'fields' => 'ids',
];
$posts = get_posts($args);
foreach ($posts as $post_id) {
wp_remove_object_terms($post_id, $category_id, 'category');
}
}
// Вызов функции
wp24_remove_category_from_posts(15);
Данная функция получит все записи из категории и удалит у них связь с ней. Это безопасный метод без прямого SQL.
Объяснение кода
get_posts с параметром fields => 'ids' возвращает только ID записей для экономии памяти. Затем wp_remove_object_terms снимает категорию с записи.
Использование плагинов для удаления категорий из записей
Для тех, кто предпочитает готовые решения, есть плагины, которые позволяют легко управлять категориями и массово изменять их у записей.
- Bulk Remove Terms — позволяет массово удалять термины (категории, теги) из записей. Удобный интерфейс и фильтры.
- Term Management Tools — расширяет стандартные возможности управления таксономиями, включая массовое удаление и перенос терминов.
Оба плагина можно найти в репозитории WordPress и установить прямо из админки.
Практическое применение: удаление категории "Старые новости" из записей
Допустим, у вас есть категория с ID 42 — "Старые новости", которую вы хотите удалить из всех записей, не удаляя сами записи.
Используем функцию из примера выше:
wp24_remove_category_from_posts(42);
После выполнения этой функции записи перестанут быть связаны с категорией "Старые новости", и категория не будет отображаться в списках и виджетах.
Советы по оптимизации после удаления категорий
После удаления категорий из большого количества записей рекомендуется:
- Очистить кэш сайта, если используете плагины кэширования.
- Проверить, нет ли ссылок и меню с устаревшими категориями и обновить их.
- Оптимизировать базу данных с помощью плагинов типа Clearfy Pro, чтобы удалить неиспользуемые таксономии и метаданные.
Заключение
Удаление записей из категории WordPress без удаления самих записей — частая задача, решаемая несколькими способами: через админку, SQL-запросы или программно с помощью функций. Используйте подходящий метод в зависимости от объёма и удобства. Не забывайте делать резервные копии и очищать кэш после изменений.