Теги в WordPress помогают структурировать контент и улучшать навигацию. Однако со временем в базе данных накапливается множество неиспользуемых тегов — таких, к которым не привязана ни одна запись. Это не только засоряет базу данных, но и может негативно влиять на SEO сайта. В этой статье мы разберёмся, как автоматически находить и удалять такие теги, используя как встроенные возможности WordPress, так и пользовательские функции и плагины.
Почему важно удалять неиспользуемые теги в WordPress
Неиспользуемые теги — это так называемые "мертвые" таксономии, которые не связаны с какими-либо записями. Они создают несколько проблем:
- Засорение базы данных: с ростом сайта и количества тегов база данных становится громоздкой, что замедляет запросы и снижает производительность.
- Плохое SEO: страницы архивов тегов без контента могут индексироваться поисковиками, создавая дублированный или пустой контент.
- Путаница в админке: большое количество неиспользуемых тегов усложняет управление таксономиями и мешает редакторам.
Поэтому регулярная очистка тегов — это важная часть поддержки сайта на WordPress.
Как найти и удалить неиспользуемые теги вручную через админку
В стандартной админке WordPress нет кнопки для массового удаления тегов без записей, но можно отфильтровать теги по количеству записей и удалить те, у которых ноль:
- Перейдите в раздел Записи → Метки.
- Найдите теги с нулём в колонке «Количество».
- Отметьте их галочками и выберите действие «Удалить» в списке массовых действий.
Этот способ подходит для небольшого количества тегов, но при большом их числе становится неудобным.
Автоматическое удаление неиспользуемых тегов с помощью пользовательского кода
Для автоматизации удаления неиспользуемых тегов можно создать PHP-функцию, которую запускают вручную или периодически через cron. Ниже — пример функции для сайта с доменом wpexamples.ru, которая удаляет все теги без привязанных записей.
function wpexamples_delete_unused_tags() {
$tags = get_terms(array(
'taxonomy' => 'post_tag',
'hide_empty' => true,
'fields' => 'ids',
));
$all_tags = get_terms(array(
'taxonomy' => 'post_tag',
'fields' => 'ids',
'hide_empty' => false
));
$unused_tags = array_diff($all_tags, $tags);
if (!empty($unused_tags)) {
foreach ($unused_tags as $tag_id) {
wp_delete_term($tag_id, 'post_tag');
}
}
}
// Запуск функции вручную
wpexamples_delete_unused_tags();Объяснение кода:
- Сначала получаем все ID тегов, у которых есть связанные записи (
hide_empty = true). - Затем получаем все ID тегов без фильтра (
hide_empty = false). - Вычисляем разницу — это и есть теги без записей.
- Удаляем каждый такой тег с помощью
wp_delete_term.
Можно автоматизировать запуск этой функции, например, добавив её в крон-задачу WordPress, чтобы чистка происходила регулярно.
Как настроить автоматическую очистку неиспользуемых тегов через WP-Cron
Чтобы функция запускалась автоматически, добавим хук для еженедельной очистки:
function wpexamples_schedule_tag_cleanup() {
if (!wp_next_scheduled('wpexamples_weekly_tag_cleanup')) {
wp_schedule_event(time(), 'weekly', 'wpexamples_weekly_tag_cleanup');
}
}
add_action('wp', 'wpexamples_schedule_tag_cleanup');
add_action('wpexamples_weekly_tag_cleanup', 'wpexamples_delete_unused_tags');Так WordPress будет запускать удаление неиспользуемых тегов раз в неделю без вашего участия.
Использование плагинов для удаления неиспользуемых тегов
Если не хотите писать код, можно использовать плагины. Однако плагинов, которые удаляют именно неиспользуемые теги массово, немного. Вот пара рекомендаций:
- Term Management Tools — добавляет дополнительные возможности управления таксономиями, включая массовое удаление. Можно отфильтровать теги с нулём записей и удалить.
- WP Sweep — плагин для очистки базы данных, который умеет удалять неиспользуемые таксономии и термы.
После установки и активации таких плагинов вы сможете регулярно чистить базу от мусора без программирования.
Пример настройки WP Sweep для очистки тегов
После установки WP Sweep:
- Перейдите в Инструменты → Sweep.
- Найдите раздел "Terms" или "Tags".
- Нажмите кнопку "Sweep" напротив пунктов с неиспользуемыми тегами.
Это простой способ поддерживать базу в чистоте.
Советы по работе с тегами, чтобы избежать накопления неиспользуемых
Чтобы не накапливать неиспользуемые теги, рекомендуем:
- Планировать структуру тегов заранее. Создавайте только необходимые теги и используйте их последовательно.
- Регулярно проверять список тегов. Используйте встроенные фильтры или плагины для мониторинга.
- Ограничить возможность создания новых тегов пользователями. Это поможет избежать мусорных тегов от редакторов.
Для ограничения создания новых тегов можно использовать фильтр pre_insert_term и проверять, разрешено ли создавать новый тег. Пример:
function wpexamples_limit_tag_creation($term, $taxonomy) {
if ($taxonomy === 'post_tag' && !current_user_can('manage_options')) {
return new WP_Error('forbidden', 'Создание новых тегов запрещено');
}
return $term;
}
add_filter('pre_insert_term', 'wpexamples_limit_tag_creation', 10, 2);Так только администраторы смогут создавать новые теги.
Заключение по автоматизации удаления неиспользуемых тегов
Удаление неиспользуемых тегов — важный этап поддержки и оптимизации сайта на WordPress. Это помогает уменьшить размер базы данных, улучшить производительность и избежать SEO-проблем с пустыми страницами архивов. Выбор способа зависит от ваших навыков и предпочтений: от ручного удаления через админку до написания собственного кода с автоматическим запуском или использования специализированных плагинов.
Если вы хотите расширить функционал сайта и упростить управление таксономиями, обратите внимание на плагины из WPShop.ru, например, Clearfy Pro, который оптимизирует и упрощает работу с WordPress, включая очистку базы и таксономий.