wpwebsite.ru wordpress WPWebSite

Как удалить пустые taxonomy terms в WordPress: практическое руководство

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

Что такое пустые taxonomy terms и почему их нужно удалять

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

Пустые термины:

  • Загромождают интерфейс администратора, затрудняя навигацию и управление контентом.
  • Могут создать избыточные URL-адреса, что негативно влияет на SEO.
  • Увеличивают размер базы данных без пользы.
  • Могут вызывать ошибки или конфликты с некоторыми плагинами и темами.

Поэтому регулярное удаление пустых терминов — хорошая практика для поддержания чистоты и производительности сайта.

Как найти пустые taxonomy terms через админку WordPress

В стандартном интерфейсе WordPress нет встроенной функции фильтрации терминов по количеству связанных записей. Но можно просмотреть список терминов и обратить внимание на колонку «Количество» (Count). Там отображается число записей, связанных с термином. Если значение равно 0, термин пустой.

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

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

Для упрощения задачи можно использовать плагин Term Management Tools. Он добавляет дополнительные возможности для массового управления терминами, включая объединение, удаление и фильтрацию.

Однако плагин не имеет прямой функции удаления всех пустых терминов за один клик, поэтому чаще применяются кастомные решения.

Как удалить пустые taxonomy terms с помощью кода

Для автоматического удаления пустых терминов можно написать кастомный скрипт. Ниже пример функции wpwebsite_delete_empty_terms(), которая удаляет пустые термины во всех таксономиях, кроме системных (например, post_tag, category).

function wpwebsite_delete_empty_terms() {
    $taxonomies = get_taxonomies(['public' => true], 'names');
    foreach ($taxonomies as $taxonomy) {
        $terms = get_terms([
            'taxonomy' => $taxonomy,
            'hide_empty' => false,
        ]);
        foreach ($terms as $term) {
            if ($term->count === 0) {
                wp_delete_term($term->term_id, $taxonomy);
            }
        }
    }
}

Эту функцию можно запустить однократно, например, через wp-cli, cron-задачу или временно подключить в functions.php темы.

Как вызвать функцию вручную через WP-CLI

Если у вас есть доступ к WP-CLI, можно выполнить функцию через команду:

wp eval 'wpwebsite_delete_empty_terms();'

Это безопасный и быстрый способ очистить базу без риска оставить непроверенные термины.

Удаление пустых терминов для конкретной таксономии

Если нужно очистить определённую таксономию, например, «product_cat» (категории WooCommerce), достаточно передать имя таксономии в функцию:

function wpwebsite_delete_empty_terms_for_taxonomy($taxonomy) {
    $terms = get_terms([
        'taxonomy' => $taxonomy,
        'hide_empty' => false,
    ]);
    foreach ($terms as $term) {
        if ($term->count === 0) {
            wp_delete_term($term->term_id, $taxonomy);
        }
    }
}

// Пример вызова для таксономии product_cat
wpwebsite_delete_empty_terms_for_taxonomy('product_cat');

Такой подход полезен, если вы хотите контролировать процесс для разных типов таксономий на сайте.

Автоматизация очистки пустых терминов с помощью плагина Clearfy Pro

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

Clearfy Pro позволяет настроить регулярное выполнение очистки, что особенно полезно для больших и активно развивающихся проектов.

Как избежать повторного появления пустых терминов

Пустые термины появляются, когда записи удаляются, но связанные с ними термины не удаляются автоматически. Чтобы минимизировать этот эффект:

  • Используйте правильные методы удаления записей и таксономий.
  • Регулярно проверяйте состояние таксономий с помощью кода или плагинов.
  • При создании пользовательских типов записей и таксономий продумывайте логику удаления связанных терминов.

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

function wpwebsite_delete_term_if_empty($post_id) {
    $taxonomies = get_object_taxonomies(get_post_type($post_id));
    foreach ($taxonomies as $taxonomy) {
        $terms = wp_get_post_terms($post_id, $taxonomy);
        foreach ($terms as $term) {
            $count = $term->count - 1; // предположим, пост удаляется
            if ($count <= 0) {
                wp_delete_term($term->term_id, $taxonomy);
            }
        }
    }
}
add_action('before_delete_post', 'wpwebsite_delete_term_if_empty');
<

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

Выводы и рекомендации

Удаление пустых taxonomy terms — важная часть технического обслуживания WordPress-сайта. Это повышает удобство работы с административной панелью, улучшает SEO и уменьшает нагрузку на базу данных.

Для очистки можно использовать:

  • Ручной просмотр и удаление через админку.
  • Кастомные скрипты с функциями wpwebsite_delete_empty_terms().
  • Плагины для оптимизации базы, например, Clearfy Pro.

Регулярная автоматизация таких процедур поможет держать сайт в чистоте и порядке.

×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙