В WordPress категории (рубрики) являются одним из основных способов организации контента. Со временем на сайте может накопиться множество категорий, которые не используются в публикациях, либо остались после удаления контента или плагинов. Такие зависшие варианты рубрик засоряют базу данных, замедляют админку и могут негативно влиять на SEO. В этой статье мы подробно рассмотрим, как найти и удалить неактивные или зависшие категории в WordPress, используя как встроенные возможности, так и примеры кода и плагины.
Что такое зависшие варианты рубрик и почему их нужно удалять
Зависшие категории — это категории, которые не связаны ни с одним постом или страницей. Они не используются для организации текущего контента, но продолжают занимать место в базе данных. Причины появления таких категорий:
- Удаление постов с единственной категорией, оставляющей категорию без записей.
- Импорт/экспорт контента с ошибками.
- Ошибки при работе с плагинами, которые создавали категории, но не удаляли их корректно.
- Эксперименты с рубриками, которые не были завершены.
Удаление таких категорий помогает:
- Уменьшить размер базы данных.
- Упростить структуру сайта и навигацию.
- Избежать дублирования контента и улучшить SEO.
Поиск зависших категорий с помощью SQL-запроса
Для начала можно быстро найти категории без связанных постов с помощью SQL-запроса к базе данных. Если у вас есть доступ к phpMyAdmin или другому инструменту работы с базой, выполните следующий запрос:
SELECT t.term_id, t.name, COUNT(tr.object_id) AS post_count
FROM wp_terms t
JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id
LEFT JOIN wp_term_relationships tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy = 'category'
GROUP BY t.term_id
HAVING post_count = 0;
Этот запрос выведет список всех категорий, у которых нет ни одного связанного поста.
Обратите внимание, что префикс таблиц wp_ может отличаться в вашей базе, замените его при необходимости.
Автоматическое удаление зависших категорий через PHP-функцию
Для удаления таких категорий можно использовать PHP-код, который проверит все категории и удалит те, у которых нет записей.
function wpreg_delete_empty_categories() {
$args = array(
'taxonomy' => 'category',
'hide_empty' => false
);
$categories = get_terms($args);
foreach ($categories as $category) {
if ($category->count == 0) {
wp_delete_term($category->term_id, 'category');
}
}
}
// Запускаем функцию один раз
wpreg_delete_empty_categories();
Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин. После выполнения удалит все пустые категории.
Использование плагинов для управления категориями и их очистки
Если вы не хотите работать с кодом напрямую, можно использовать плагины, которые помогут выявить и удалить пустые категории.
Плагин Term Management Tools
Этот плагин позволяет управлять таксономиями, включая объединение и удаление терминов. Он показывает количество записей в каждой категории и помогает удалить пустые.
Плагин WP Sweep
WP Sweep помогает очистить базу данных от мусора, включая удаление пустых таксономий и неиспользуемых терминов.
Как избежать появления зависших категорий в будущем
Чтобы не сталкиваться с проблемой накопления пустых категорий, рекомендуем придерживаться следующих правил:
- При удалении постов проверяйте, не осталась ли единственная категория пустой.
- Используйте функции WordPress для удаления категорий вместе с контентом, когда это нужно.
- Регулярно проводите аудит таксономий с помощью плагинов или SQL-запросов.
- Автоматизируйте очистку с помощью WPReg_cron, написав задачу для вызова функции очистки категорий.
Пример автоматизации удаления зависших категорий с WPReg_cron
function wpreg_cron_delete_empty_categories() {
wpreg_delete_empty_categories();
}
if (!wp_next_scheduled('wpreg_cron_empty_categories_hook')) {
wp_schedule_event(time(), 'daily', 'wpreg_cron_empty_categories_hook');
}
add_action('wpreg_cron_empty_categories_hook', 'wpreg_cron_delete_empty_categories');
Этот код создаст ежедневную задачу для автоматической очистки пустых категорий, что улучшит здоровье базы данных и структуру сайта.
Итоги
Зависшие варианты рубрик — частая и неочевидная проблема для многих сайтов на WordPress. Их своевременное удаление помогает поддерживать базу данных в чистоте, повышать скорость загрузки и улучшать SEO. Используйте SQL-запросы для поиска, PHP-функции для удаления и плагины для удобства. Автоматизация через WPReg_cron сделает процесс регулярным и незаметным.
Для более подробной информации и полезных инструментов рекомендуем посетить официальный магазин плагинов и тем WPShop с инструментами, которые помогут оптимизировать ваш сайт.