Почему важно удалять пустые категории и теги в WordPress
Пустые категории и теги — это те таксономии, к которым не привязаны записи. Они не несут пользы для пользователя и поисковых систем, а только загромождают админ-панель и могут ухудшать SEO. Особенно это актуально для сайтов с большим количеством контента и часто меняющейся структурой. Удаление пустых категорий и тегов помогает сделать структуру сайта чище, повысить удобство навигации и улучшить индексацию сайта поисковиками.
Кроме того, пустые таксономии могут негативно влиять на производительность сайта, так как WordPress обрабатывает их при формировании запросов и построении меню. Регулярная чистка таксономий — важный этап технического обслуживания сайта.
В этой статье рассмотрим, как быстро находить и удалять пустые категории и теги в WordPress как с помощью плагинов, так и с помощью кода.
Как найти пустые категории и теги с помощью плагинов
Плагин «Term Management Tools» для массового удаления
«Term Management Tools» — бесплатный плагин, который расширяет возможности управления таксономиями в WordPress. Он позволяет массово удалять пустые категории и теги, а также объединять термины.
Для использования:
- Установите и активируйте плагин через админ-панель WordPress.
- Перейдите в раздел «Записи» –> «Категории» или «Метки».
- Выберите фильтр «Пустые» (Empty), чтобы отобразить только таксономии без записей.
- Отметьте нужные элементы и выберите действие «Удалить» в выпадающем списке массовых действий.
- Нажмите «Применить» для удаления.
Этот способ удобен для администраторов, не владеющих программированием, и позволяет быстро поддерживать порядок.
Плагин «WP-Optimize» и его возможности
В дополнение к оптимизации базы данных плагин WP-Optimize имеет инструмент очистки таксономий. Он помогает удалять неиспользуемые категории и теги, в том числе пустые. В разделе очистки базы данных можно активировать соответствующие опции и выполнить очистку одним кликом.
Однако, если нужен более точечный контроль, лучше использовать специализированные инструменты или код.
Удаление пустых категорий и тегов через код (PHP)
Если хочется автоматизировать процесс, можно написать функцию, которая ищет пустые категории и теги и удаляет их программно. Ниже пример такой функции для сайта wpclean.ru с префиксом функций wpclean_ для удобства и избежания конфликтов.
Функция перебирает таксономии category и post_tag, получает термины с нулевым количеством записей и удаляет их.
function wpclean_delete_empty_terms() {
$taxonomies = array('category', 'post_tag');
foreach ($taxonomies as $taxonomy) {
$empty_terms = get_terms(array(
'taxonomy' => $taxonomy,
'hide_empty' => true, // Только пустые
'fields' => 'ids',
));
if (!empty($empty_terms) && !is_wp_error($empty_terms)) {
foreach ($empty_terms as $term_id) {
wp_delete_term($term_id, $taxonomy);
}
}
}
}
// Рекомендуется запускать функцию вручную или через крон
// Например, добавьте вызов в админ-панели или в файл functions.php
// wpclean_delete_empty_terms();Обратите внимание, что параметр 'hide_empty' => true в get_terms фильтрует только термины с записями, поэтому для поиска пустых терминов нужно использовать 'hide_empty' => false и дополнительно фильтровать по счётчику $term->count == 0. Исправленная версия ниже:
function wpclean_delete_empty_terms() {
$taxonomies = array('category', 'post_tag');
foreach ($taxonomies as $taxonomy) {
$terms = get_terms(array(
'taxonomy' => $taxonomy,
'hide_empty' => false,
'fields' => 'all',
));
if (!empty($terms) && !is_wp_error($terms)) {
foreach ($terms as $term) {
if ($term->count == 0) {
wp_delete_term($term->term_id, $taxonomy);
}
}
}
}
}<Для запуска функции вручную достаточно один раз вызвать wpclean_delete_empty_terms(); в админской части или через отдельный скрипт. Для регулярной очистки можно добавить задачу в WP-Cron.
Автоматизация удаления пустых категорий и тегов через WP-Cron
Чтобы поддерживать сайт в чистоте постоянно, можно настроить автоматический запуск очистки. Для этого создадим событие WP-Cron и привяжем к нему нашу функцию.
function wpclean_schedule_cleanup() {
if (!wp_next_scheduled('wpclean_cron_cleanup_terms')) {
wp_schedule_event(time(), 'daily', 'wpclean_cron_cleanup_terms');
}
}
add_action('wp', 'wpclean_schedule_cleanup');
function wpclean_cron_cleanup_terms_callback() {
wpclean_delete_empty_terms();
}
add_action('wpclean_cron_cleanup_terms', 'wpclean_cron_cleanup_terms_callback');Этот код добавляет ежедневное задание, которое будет автоматически удалять пустые категории и теги. Таким образом, не придется заботиться об этом вручную.
Дополнительные советы по управлению таксономиями в WordPress
Переосмысление структуры категорий и тегов
Пустые категории и теги часто появляются из-за нечеткого планирования структуры сайта. Рекомендуется периодически пересматривать и оптимизировать таксономии. Лучше использовать меньше, но более релевантных категорий и тегов, чтобы избежать излишнего дублирования и пустых терминов.
Используйте иерархические категории для логической группировки, а теги — для описания особенностей контента. Правильная структура улучшает юзабилити и SEO.
Массовое объединение и удаление терминов
Плагины вроде «Term Management Tools» позволяют не только удалять пустые термины, но и объединять похожие теги, например, если есть «WordPress» и «wordpress». Это помогает избежать дробления SEO-силы и упрощает управление.
Ручное объединение можно делать через функцию wpclean_merge_terms($old_term_id, $new_term_id, $taxonomy), пример которой можно реализовать по аналогии с удалением.
Очистка неиспользуемых терминов в пользовательских таксономиях
Если на сайте используются свои таксономии, например, для продуктов, проектов или портфолио, аналогично можно искать и удалять пустые термины. В функции wpclean_delete_empty_terms достаточно добавить названия этих таксономий в массив $taxonomies. Такой подход универсален и расширяем.