wpclean.ru wordpress WPClean.ru

Удаление неиспользуемых taxonomy termmeta в WordPress для оптимизации базы данных

В WordPress с версии 4.4 появилась возможность добавлять метаданные к терминам таксономий — termmeta. Это удобный инструмент для хранения дополнительной информации, однако при активном использовании плагинов и тем с кастомными таксономиями метаданные могут накапливаться, оставаться неиспользуемыми и засорять базу данных. В этой статье разберем, как выявить и удалить неиспользуемые taxonomy termmeta корректно и эффективно, чтобы не навредить сайту и улучшить производительность.

Что такое taxonomy termmeta и зачем его оптимизировать

Taxonomy termmeta — это таблица wp_termmeta, в которой хранятся произвольные поля для терминов таксономий, таких как категории, теги, а также кастомные таксономии. Плагины и темы используют эту таблицу для хранения настроек, дополнительных данных, например, иконок категорий, описаний, SEO-параметров и прочего.

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

  • Увеличению размера базы данных;
  • Повышенной нагрузке при запросах к терминологии;
  • Сложностям при резервном копировании и восстановлении;
  • Общему замедлению сайта.

Оптимизация — это удаление таких «мертвых» метаданных, которые не связаны с существующими терминами или не используются в функционале.

Как проверить наличие неиспользуемых termmeta в базе данных

Первым шагом необходимо выявить, какие метаданные не привязаны к существующим терминам. Для этого можно использовать SQL-запросы напрямую к базе данных через phpMyAdmin или консоль MySQL.

Пример запроса для поиска termmeta с несуществующими term_id:

SELECT meta_id, term_id, meta_key 
FROM wp_termmeta 
WHERE term_id NOT IN (SELECT term_id FROM wp_terms);

Этот запрос вернёт все записи в wp_termmeta, у которых нет соответствующего термина в таблице wp_terms. Такие данные можно смело удалять, так как они неактивны.

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

Удаление неиспользуемых termmeta через SQL и WP CLI

Оптимальный способ — удалять данные пакетно, используя SQL-запросы. Например, очистка всех orphan termmeta:

DELETE FROM wp_termmeta 
WHERE term_id NOT IN (SELECT term_id FROM wp_terms);

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

Альтернативно можно использовать WP CLI для удаления метаданных по одному термину или по критериям, если хотите вручную контролировать процесс.

Пример функции в теме или плагине для удаления неактивных termmeta:

function wpclean_delete_orphan_termmeta() {
    global $wpdb;
    $deleted = $wpdb->query(
        "DELETE FROM {$wpdb->termmeta} 
         WHERE term_id NOT IN (SELECT term_id FROM {$wpdb->terms})"
    );
    return $deleted;
}

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

Использование плагинов для очистки базы данных от неиспользуемых taxonomy termmeta

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

  • Clearfy Pro — этот плагин имеет инструменты для оптимизации базы, включая удаление orphan meta, настройку автоматической очистки и мониторинг;
  • WPRemark — плагин для работы с метаданными, позволяет управлять и массово удалять ненужные данные;
  • WP Optimize, Advanced Database Cleaner — универсальные плагины для очистки и оптимизации базы с возможностью удалять неиспользуемые termmeta.

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

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

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

  • Перед удалением плагинов проверяйте, очищают ли они свои данные. Если нет — удаляйте вручную;
  • Регулярно проводите аудит базы данных и удаляйте orphan meta через WP CLI или плагины;
  • Используйте плагины с хорошей репутацией, которые корректно работают с метаданными;
  • Включите автоматическую оптимизацию базы в Clearfy Pro или аналогичных инструментах;
  • При разработке тем и плагинов реализуйте функции удаления метаданных при удалении таксономий и терминов.

Вот пример хука для удаления termmeta при удалении термина в вашей теме или плагине:

add_action('deleted_term', 'wpclean_delete_termmeta_on_term_delete', 10, 4);
function wpclean_delete_termmeta_on_term_delete($term_id, $term, $tt_id, $deleted_term_taxonomy) {
    global $wpdb;
    $wpdb->delete($wpdb->termmeta, ['term_id' => $term_id]);
}

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

×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее