WPLite

Удаление неиспользуемых таксономий в WordPress: практическое руководство

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

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

Таксономии — это способ группировки записей, страниц и кастомных типов записей. Стандартные таксономии — категории (category) и метки (post_tag), а также пользовательские, создаваемые разработчиками тем и плагинов. Если таксономия не используется, она занимает место в базе данных, замедляет запросы и усложняет администрирование.

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

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

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

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

1. Просмотр зарегистрированных таксономий

Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин, чтобы вывести список всех таксономий:

function wplite_list_taxonomies() {
    $taxonomies = get_taxonomies([], 'objects');
    echo '<pre>';
    foreach ($taxonomies as $taxonomy) {
        echo 'Таксономия: ' . $taxonomy->name . ' - ' . $taxonomy->label . "\n";
    }
    echo '</pre>';
}
add_action('admin_notices', 'wplite_list_taxonomies');

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

2. Проверка количества записей в таксономии

Для каждой таксономии полезно узнать, есть ли к ней привязанные записи. Вот функция, которая выводит количество объектов для каждой таксономии:

function wplite_taxonomy_counts() {
    $taxonomies = get_taxonomies([], 'names');
    foreach ($taxonomies as $taxonomy) {
        $terms = get_terms(['taxonomy' => $taxonomy, 'hide_empty' => false]);
        $count = 0;
        foreach ($terms as $term) {
            $count += $term->count;
        }
        echo 'Таксономия ' . $taxonomy . ' содержит ' . $count . ' записей.<br>';
    }
}
add_action('admin_notices', 'wplite_taxonomy_counts');

Если количество записей равно нулю, скорее всего, таксономия неиспользуема.

Удаление таксономий: что важно знать

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

  • Отменить регистрацию таксономии в коде (удалить или закомментировать соответствующий register_taxonomy).
  • Удалить термины и связи в базе данных, так как они не удаляются автоматически.

Если таксономия зарегистрирована плагином, посмотрите, можно ли отключить или удалить этот плагин. Если нет — придётся создавать кастомный код для очистки.

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

Пример функции, которая удаляет все термины определённой таксономии и очищает связи:

function wplite_delete_taxonomy_terms($taxonomy) {
    if (!taxonomy_exists($taxonomy)) {
        return 'Таксономия не найдена';
    }

    $terms = get_terms([
        'taxonomy' => $taxonomy,
        'hide_empty' => false,
    ]);

    foreach ($terms as $term) {
        wp_delete_term($term->term_id, $taxonomy);
    }

    global $wpdb;
    // Удаляем связи с записями в таблице term_relationships
    $term_taxonomy_ids = $wpdb->get_col($wpdb->prepare(
        "SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE taxonomy = %s",
        $taxonomy
    ));

    if (!empty($term_taxonomy_ids)) {
        foreach ($term_taxonomy_ids as $tt_id) {
            $wpdb->delete($wpdb->term_relationships, ['term_taxonomy_id' => $tt_id]);
        }
        $wpdb->delete($wpdb->term_taxonomy, ['taxonomy' => $taxonomy]);
    }

    return 'Таксономия ' . $taxonomy . ' успешно очищена';
}

Вызовите функцию с нужным именем таксономии, например:

add_action('admin_init', function() {
    echo wplite_delete_taxonomy_terms('old_taxonomy');
});

После очистки удалите регистрацию таксономии из кода.

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

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

  • Remove Taxonomy — простой плагин для удаления пользовательских таксономий.
  • Clearfy Pro — комплексный инструмент оптимизации, который включает функционал для отключения и скрытия неиспользуемых таксономий и других элементов.

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

Советы по безопасности и резервному копированию

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

Для создания резервной копии можно использовать плагины, например, Backup WP или любой другой проверенный инструмент.

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

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

Используйте Clearfy Pro для комплексной оптимизации и упрощения управления неиспользуемыми элементами WordPress. Не забывайте делать резервные копии перед изменениями.

×
до 3225₽

Продавай темы и плагины WordPress!

Лови с каждой продажи

Начать ⋙