wpupgrade.ru wordpress WP Upgrade

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

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

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

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

Удаление таких таксономий помогает:

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

Важно удалять таксономии аккуратно, чтобы не потерять нужные данные.

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

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

function wpupgrade_list_taxonomies_usage() {
    $taxonomies = get_taxonomies([], 'objects');
    foreach ($taxonomies as $taxonomy) {
        $count = wp_count_terms($taxonomy->name);
        echo 'Таксономия: ' . esc_html($taxonomy->name) . ' - Количество терминов: ' . intval($count) . '<br>';
    }
}
wpupgrade_list_taxonomies_usage();

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

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

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

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

Однако можно удалить записи терминов и очистить связанные метаданные из базы данных. Для этого используйте функции и SQL-запросы с осторожностью.

Удаление терминов таксономии через PHP

Пример кода для удаления всех терминов заданной таксономии:

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

// Использование
wpupgrade_delete_taxonomy_terms('custom_taxonomy_slug');

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

Удаление таксономии из базы данных

Если таксономия уже не зарегистрирована, но остались данные в базе, можно очистить таблицы вручную (через phpMyAdmin или WPDB). Например, удалить все термины и связи с таксономией:

DELETE tt, tr, t
FROM wp_terms t
INNER JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id
LEFT JOIN wp_term_relationships tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy = 'custom_taxonomy_slug';

Обязательно сделайте резервную копию базы перед такими действиями.

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

Чтобы не создавать лишние таксономии или не оставлять после себя «мусор», придерживайтесь следующих рекомендаций:

  • Удаляйте или отключайте плагины и темы, которые регистрируют кастомные таксономии, если они больше не нужны.
  • Проверяйте код на предмет регистрации таксономий через register_taxonomy.
  • Используйте плагин Clearfy Pro для оптимизации и очистки базы данных, включая таксономии (подробнее).
  • Автоматизируйте проверку и отчистку данных с помощью собственных скриптов и задач WP-Cron.

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

Можно реализовать автоматическую проверку и удаление неиспользуемых терминов таксономий с помощью кастомной функции и WP-Cron. Пример:

function wpupgrade_cleanup_unused_taxonomies() {
    $taxonomies = get_taxonomies([], 'names');
    foreach ($taxonomies as $taxonomy) {
        $count = wp_count_terms($taxonomy);
        if ($count === 0) {
            wpupgrade_delete_taxonomy_terms($taxonomy);
        }
    }
}

if (!wp_next_scheduled('wpupgrade_cleanup_hook')) {
    wp_schedule_event(time(), 'daily', 'wpupgrade_cleanup_hook');
}
add_action('wpupgrade_cleanup_hook', 'wpupgrade_cleanup_unused_taxonomies');

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

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее