В WordPress со временем накапливается большое количество тегов, которые уже не используются в записях. Это часто случается на сайтах с большим количеством контента, когда теги создаются автоматически или пользователями, а затем остаются без привязки к материалам. Наличие таких «мертвых» тегов влияет на производительность базы данных, усложняет навигацию и мешает SEO. В этой статье мы рассмотрим, как удалить неиспользуемые теги грамотно, без риска перегрузки базы и с сохранением безопасности сайта.
Почему важно удалять неиспользуемые теги в WordPress
Теги в WordPress – это таксономия, которая помогает структурировать контент и улучшает навигацию. Но если теги не используются в записях, они становятся мусором в базе данных. Такие неиспользуемые теги занимают место в таблице wp_terms и связанной с ней wp_term_taxonomy. Чем больше лишних тегов, тем медленнее работают запросы на выборку и тем более загроможденной становится админ-панель.
Удаление неиспользуемых тегов помогает:
- Сократить размер базы данных.
- Улучшить скорость выполнения запросов.
- Облегчить управление таксономиями в админке.
- Повысить качество SEO за счет чистого и релевантного тегирования.
Как определить неиспользуемые теги в базе WordPress
Теги в WordPress хранятся как термины таксономии post_tag. В таблице wp_term_taxonomy поле count хранит количество записей, связанных с каждым тегом. Если count равен нулю, значит тег не используется.
Для проверки можно выполнить SQL-запрос через phpMyAdmin или любой другой инструмент работы с базой данных:
SELECT t.term_id, t.name, tt.count FROM wp_terms AS t
JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'post_tag' AND tt.count = 0;Этот запрос выведет список тегов без записей. Удалять их вручную в админке неудобно, особенно если их слишком много. Лучше автоматизировать процесс.
Удаление неиспользуемых тегов через код в functions.php
Для безопасного удаления неиспользуемых тегов можно использовать функцию, которая сначала найдет все теги с нулевым счетчиком, а затем удалит их. Ниже пример функции wpcontent_delete_unused_tags(), которую можно добавить в файл functions.php вашей темы или создать небольшой плагин:
function wpcontent_delete_unused_tags() {
global $wpdb;
// Получаем неиспользуемые теги
$unused_tags = $wpdb->get_col("SELECT t.term_id FROM {$wpdb->terms} AS t
INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'post_tag' AND tt.count = 0");
if (empty($unused_tags)) {
return 'Неиспользуемых тегов не найдено.';
}
foreach ($unused_tags as $term_id) {
wp_delete_term($term_id, 'post_tag');
}
return count($unused_tags) . ' неиспользуемых тегов удалено.';
}Для запуска функции можно добавить вызов в админке, например через AJAX или настраиваемую страницу. Но проще временно вставить вызов и сразу удалить после выполнения:
add_action('admin_init', function() {
if (current_user_can('manage_options') && isset($_GET['delete_unused_tags'])) {
echo wpcontent_delete_unused_tags();
exit;
}
});После добавления этого кода можно перейти в админку с параметром ?delete_unused_tags=1 и запустить удаление. Не забудьте убрать этот код после выполнения.
Удаление неиспользуемых тегов с помощью плагинов
Если не хотите трогать код, можно использовать плагины. Но большинство популярных плагинов для очистки базы ориентированы на удаление ревизий, спама, метаданных, а вот именно по тегам таких мало.
Один из вариантов — плагин Term Management Tools, который помогает управлять тегами и категориями. В нем есть возможность массового удаления терминов, но предварительно нужно фильтровать по счетчику.
Также стоит обратить внимание на Clearfy Pro из WPShop, который содержит функции для оптимизации базы и удаления неиспользуемых таксономий вместе с другими инструментами оптимизации.
Оптимизация базы после удаления тегов
После удаления тегов рекомендуется выполнить оптимизацию таблиц базы данных для освобождения места и улучшения производительности. Это можно сделать через phpMyAdmin командой:
OPTIMIZE TABLE wp_terms, wp_term_taxonomy;Или через плагин, например, WP-Optimize или Clearfy Pro из WPShop.
Советы по предотвращению накопления неиспользуемых тегов
Чтобы в будущем не столкнуться с проблемой засорения базы неиспользуемыми тегами, придерживайтесь следующих рекомендаций:
- Ограничьте количество тегов, разрешенных для добавления в записи.
- Используйте автозаполнение и подбор тегов через плагины, чтобы избежать дублирования.
- Периодически проверяйте счетчики таксономий и удаляйте неиспользуемые.
- При массовом импорте контента тщательно фильтруйте теги.
Также можно автоматизировать удаление неиспользуемых тегов с помощью WP-Cron, запуская функцию wpcontent_delete_unused_tags() по расписанию, например раз в месяц.
Пример настройки WP-Cron для автоматического удаления
function wpcontent_schedule_tag_cleanup() {
if (!wp_next_scheduled('wpcontent_cron_tag_cleanup')) {
wp_schedule_event(time(), 'monthly', 'wpcontent_cron_tag_cleanup');
}
}
add_action('wp', 'wpcontent_schedule_tag_cleanup');
add_action('wpcontent_cron_tag_cleanup', 'wpcontent_delete_unused_tags');Этот код добавляет ежемесячное задание, которое будет автоматически удалять все неиспользуемые теги без вашего участия.
Выводы
Удаление неиспользуемых тегов в WordPress — важная задача для поддержания базы данных в чистоте и высокой производительности сайта. Используйте SQL-запросы для анализа, функции PHP для безопасного удаления и автоматизацию через WP-Cron. Если предпочитаете без кода — обратите внимание на плагины Clearfy Pro и Term Management Tools. Регулярная очистка и оптимизация позволят избежать проблем с производительностью и улучшить качество контента.