Как удалить неиспользуемые теги в WordPress с помощью кода

Теги в WordPress — это удобный способ категоризации и структурирования контента. Однако со временем в базе могут накапливаться неиспользуемые теги, которые не привязаны ни к одному посту. Они создают лишний шум, могут замедлять работу сайта и усложнять администрирование. В этой статье мы подробно разберем, как найти и удалить такие теги с помощью кода, без использования дополнительных плагинов.

Почему важно удалять неиспользуемые теги в WordPress

Многие администраторы забывают о регулярной чистке таксономий. Неиспользуемые теги занимают место в базе данных и могут создавать путаницу при управлении контентом. Кроме того, поисковые системы могут воспринимать большое количество пустых тегов как знак неаккуратности в структуре сайта, что влияет на SEO.

Удаление таких тегов поможет:

  • Сократить размер базы данных;
  • Упростить навигацию и администрирование;
  • Повысить скорость работы сайта;
  • Избежать ошибок в пользовательских фильтрах и виджетах.

Как определить, какие теги не используются

В WordPress теги — это термины таксономии post_tag. Для каждого тега есть поле count — количество связанных с ним записей. Теги с count равным нулю и есть неиспользуемые.

Самый простой способ — сделать SQL-запрос к базе данных:

SELECT term_id, name FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'post_tag' AND tt.count = 0;

Этот запрос вернёт список ID и названий всех неиспользуемых тегов.

Автоматическое удаление неиспользуемых тегов через PHP-код

Чтобы не выполнять SQL вручную, можно написать функцию, которая удалит все теги с нулевым счётом. Вставьте следующий код в файл functions.php вашей темы или создайте отдельный плагин:

function wplog_delete_unused_tags() {
    $args = array(
        'taxonomy' => 'post_tag',
        'hide_empty' => true
    );

    // Получаем все теги, включая пустые
    $all_tags = get_terms(array(
        'taxonomy' => 'post_tag',
        'hide_empty' => false
    ));

    if (is_wp_error($all_tags)) return;

    foreach ($all_tags as $tag) {
        if ($tag->count == 0) {
            wp_delete_term($tag->term_id, 'post_tag');
            // Для отладки можно раскомментировать
            // error_log('Удалён тег: ' . $tag->name);
        }
    }
}

Чтобы запустить функцию, вызовите wplog_delete_unused_tags(); один раз, например, через админский хук или вручную. После удаления можно закомментировать вызов, чтобы избежать повторных удалений.

Пример вызова при активации плагина

register_activation_hook(__FILE__, 'wplog_delete_unused_tags');

Этот код выполнит очистку один раз при активации плагина.

Использование плагинов для управления тегами и очистки

Если хотите более визуальное решение, подойдут плагины, которые позволяют работать с таксономиями и очищать базу:

  • Term Management Tools — плагин для массового удаления и слияния тегов;
  • Clearfy Pro — комплексный инструмент для оптимизации и очистки сайта, включая удаление неиспользуемых тегов;
  • WP-Optimize — плагин для очистки базы данных и оптимизации.

Однако автоматизация с помощью кода даёт полный контроль и позволяет интегрировать процесс очистки в собственные скрипты и задачи.

Дополнительные советы по работе с тегами в WordPress

Ограничение добавления новых тегов

Если хотите избежать накопления мусорных тегов, можно ограничить их количество при создании поста. Например, запретить добавлять новые теги без одобрения:

function wplog_limit_new_tags($tags) {
    $allowed_tags = get_terms(array(
        'taxonomy' => 'post_tag',
        'hide_empty' => false,
        'fields' => 'names'
    ));

    $filtered = array_intersect($tags, $allowed_tags);
    return $filtered;
}
add_filter('pre_term_name', 'wplog_limit_new_tags');

Регулярная проверка и отчёты

Для удобства можно создать wp-cron задачу, которая будет еженедельно удалять неиспользуемые теги и отправлять отчет на email администратору. Это избавит от необходимости вручную контролировать базу.

Заключение

Удаление неиспользуемых тегов — важная и простая в реализации задача, которая помогает поддерживать WordPress-сайт в чистоте и порядке. С помощью приведённого кода вы сможете легко автоматизировать этот процесс и повысить производительность вашего ресурса.

Как добавить автоматическое отправление сообщений в контактной форме WordPress
07.04.2026
Как установить ограничения на регистрацию в WordPress по домену email
10.04.2026
Как установить ограничение на число категорий в WordPress
18.02.2026
Как использовать хуки в WordPress для автоматизации задач
21.11.2025
Как установить ограничение на длительность сессии в WordPress
14.04.2026