wpload.ru wordpress WPLoad.ru

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

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

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

Теги в WordPress — это удобный способ группировки контента, однако при удалении или изменении постов некоторые теги остаются «пустыми». Со временем их количество может стать значительным. Вот основные проблемы, которые они создают:

  • Увеличение размера базы данных и замедление запросов;
  • Путаница в админке и усложнение навигации по тегам;
  • Возможное негативное влияние на SEO, если теги индексируются поисковиками, но не содержат контента.

Ручное удаление — трудоёмкий процесс, особенно если тегов много. Поэтому лучше автоматизировать эту задачу.

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

WordPress хранит теги как термины таксономии post_tag. Чтобы найти неиспользуемые теги, нужно проверить, какие из них не связаны ни с одним постом — у таких терминов параметр count равен 0.

Вот пример функции для удаления таких тегов. Мы добавим префикс wpload_ к названию функции, чтобы избежать конфликтов:

function wpload_delete_unused_tags() {
    // Получаем все теги с count=0
    $unused_tags = get_terms(array(
        'taxonomy' => 'post_tag',
        'hide_empty' => true,
        'fields' => 'ids'
    ));

    if (empty($unused_tags)) {
        return 'Неиспользуемых тегов не найдено';
    }

    foreach ($unused_tags as $tag_id) {
        wp_delete_term($tag_id, 'post_tag');
    }

    return count($unused_tags) . ' тегов удалено';
}

Обратите внимание, что параметр 'hide_empty' => true в функции get_terms() возвращает только теги, у которых связаны посты. Чтобы получить неиспользуемые теги, нужно поставить false и дополнительно фильтровать по нулевому количеству:

function wpload_delete_unused_tags() {
    $all_tags = get_terms(array(
        'taxonomy' => 'post_tag',
        'hide_empty' => false,
        'fields' => 'all'
    ));

    $deleted_count = 0;
    foreach ($all_tags as $tag) {
        if ($tag->count === 0) {
            wp_delete_term($tag->term_id, 'post_tag');
            $deleted_count++;
        }
    }

    return $deleted_count . ' неиспользуемых тегов удалено';
}

Вы можете вызвать эту функцию вручную, например, из консоли WP-CLI или при необходимости добавить вызов в админке.

Автоматизация удаления через WP-CLI

Если у вас есть доступ к консоли сервера, можно зарегистрировать команду WP-CLI для удаления неиспользуемых тегов:

if (defined('WP_CLI') && WP_CLI) {
    WP_CLI::add_command('wpload clean-unused-tags', function() {
        $result = wpload_delete_unused_tags();
        WP_CLI::success($result);
    });
}

Теперь в терминале достаточно выполнить:

wp wpload clean-unused-tags

И все пустые теги будут удалены быстро и безопасно.

Плагины для управления тегами и очистки базы данных

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

  • Clearfy Pro — мощный инструмент для оптимизации WordPress, в том числе умеет чистить неиспользуемые таксономии. Подробнее: https://wpshop.ru/plugins/clearfy-pro/
  • WP Sweep — бесплатный плагин для очистки базы данных, включая удаление неиспользуемых терминов.
  • Term Management Tools — плагин для слияния и удаления терминов таксономии.

Clearfy Pro выделяется тем, что имеет удобный интерфейс и множество настроек для тонкой оптимизации сайта, включая автоматическую очистку.

Как безопасно использовать автоматическое удаление тегов

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

Также стоит ограничить запуск удаления в админке или через WP-CLI, чтобы случайно не вызвать функцию на живом сайте без проверки.

Если вы хотите запускать очистку по расписанию, можно добавить WP Cron задачу:

function wpload_schedule_tag_cleanup() {
    if (!wp_next_scheduled('wpload_cleanup_unused_tags_event')) {
        wp_schedule_event(time(), 'daily', 'wpload_cleanup_unused_tags_event');
    }
}
add_action('wp', 'wpload_schedule_tag_cleanup');

add_action('wpload_cleanup_unused_tags_event', 'wpload_delete_unused_tags');

Данный код настроит ежедневную очистку неиспользуемых тегов. Но будьте осторожны — тщательно проверяйте результат и логи.

Итоги

Автоматическое удаление неиспользуемых тегов помогает поддерживать базу данных WordPress в порядке, ускоряет работу сайта и улучшает SEO. Для этого можно использовать как собственные функции с вызовом через WP-CLI или WP Cron, так и готовые плагины, например, Clearfy Pro.

Если хотите начать с простого, попробуйте функцию wpload_delete_unused_tags() вручную, а затем автоматизируйте процесс. Так вы избавитесь от «мусора» в таксономиях и сделаете сайт легче и быстрее.

×

Пора действовать!

Скидки на
WordPress!

-20%
на премиум темы

Успей купить ⋙