В процессе эксплуатации сайта на WordPress база данных постепенно разрастается и наполняется различными записями, среди которых могут оказаться неиспользуемые теги. Эти теги не связаны ни с одной записью и создают лишнюю нагрузку на базу данных, что может замедлять работу сайта и усложнять администрирование. В этой статье мы подробно разберём, как безопасно и эффективно удалить такие теги из базы данных WordPress.
Почему важно удалять неиспользуемые теги из базы данных WordPress
Теги в WordPress хранятся в нескольких таблицах: wp_terms, wp_term_taxonomy и wp_term_relationships. Если тег не используется ни в одной записи (посте, странице, пользовательском типе записи), то он считается неиспользуемым.
Наличие большого количества таких тегов может вызвать следующие проблемы:
- Увеличение размера базы данных;
- Замедление запросов к базе данных при выборке терминов;
- Ошибки и путаница при управлении таксономиями;
- Сложности при миграции или резервном копировании базы.
Удаление неиспользуемых тегов повышает производительность и облегчает сопровождение сайта.
Как найти неиспользуемые теги в базе данных WordPress
Для начала нужно определить, какие теги не связаны ни с одной записью. В WordPress для этого достаточно проверить таблицу wp_term_taxonomy, где хранится связь между термином и типом таксономии, а также количество объектов, связанных с термином в поле count.
Теги — это термины с таксономией post_tag. Если у тега в поле count стоит 0, значит, к нему не прикреплены записи.
Пример SQL-запроса для выбора неиспользуемых тегов:
SELECT t.term_id, t.name FROM wp_terms t JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id WHERE tt.taxonomy = 'post_tag' AND tt.count = 0;Этот запрос покажет список тегов, которые нигде не используются.
Как удалить неиспользуемые теги из базы данных WordPress вручную
Удалять теги нужно аккуратно и последовательно, чтобы не нарушить целостность базы. Порядок действий:
- Проверить список тегов с помощью запроса выше.
- Удалить записи из таблиц
wp_term_relationshipsиwp_term_taxonomyдля этих тегов. - Удалить сами термины из таблицы
wp_terms.
Пример последовательных SQL-запросов для удаления одного тега с term_id = 123:
DELETE FROM wp_term_relationships WHERE term_taxonomy_id IN (SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE term_id = 123 AND taxonomy = 'post_tag'); DELETE FROM wp_term_taxonomy WHERE term_id = 123 AND taxonomy = 'post_tag'; DELETE FROM wp_terms WHERE term_id = 123;Можно объединить эти запросы с помощью подзапросов, но для безопасности лучше выполнять по шагам.
Автоматизация удаления неиспользуемых тегов с помощью PHP-функции в WordPress
Чтобы не выполнять вручную SQL-запросы, можно написать функцию, которая автоматически найдёт и удалит неиспользуемые теги. Используем WordPress API для работы с таксономиями.
function wpstart_delete_unused_tags() {
$args = array(
'taxonomy' => 'post_tag',
'hide_empty' => true,
);
// Получаем все теги с count = 0
$all_tags = get_terms(array(
'taxonomy' => 'post_tag',
'hide_empty' => false,
));
$deleted = 0;
foreach ($all_tags as $tag) {
if ($tag->count === 0) {
wp_delete_term($tag->term_id, 'post_tag');
$deleted++;
}
}
return $deleted;
}Эта функция получает все теги, включая пустые (hide_empty = false), затем удаляет те, у которых count равен 0.
Вы можете добавить вызов этой функции в админ-панели, плагине или в файле functions.php вашей темы. Например, для отладки:
add_action('admin_init', function() {
$deleted = wpstart_delete_unused_tags();
if ($deleted) {
error_log('Удалено неиспользуемых тегов: ' . $deleted);
}
});Плагины для очистки базы данных WordPress от неиспользуемых таксономий
Если вы предпочитаете готовые решения, существуют плагины, которые облегчат удаление неиспользуемых тегов и других таксономий:
- WP-Optimize — мощный плагин для очистки базы данных, удаляет неиспользуемые термины, ревизии, спам-комментарии и многое другое.
- Advanced Database Cleaner — позволяет проводить глубокий аудит базы данных, в том числе выявлять неиспользуемые термины и таксономии.
- Term Management Tools — плагин для удобного управления терминами, с возможностью слияния и удаления.
Использование этих плагинов поможет избежать ошибок и упростит обслуживание сайта.
Советы по безопасности и резервному копированию перед удалением тегов
Перед любыми изменениями в базе данных обязательно сделайте резервную копию. Если что-то пойдёт не так, вы сможете восстановить сайт.
Для резервного копирования можно использовать плагины, например, UpdraftPlus или Duplicator, или делать дамп базы данных вручную через phpMyAdmin:
- Зайдите в phpMyAdmin;
- Выберите базу данных;
- Перейдите на вкладку «Экспорт»;
- Выберите метод «Быстрый» и формат SQL;
- Нажмите «Вперед» и сохраните файл.
Такой файл позволит быстро восстановить базу при необходимости.
Подводим итоги: зачем и как удалять неиспользуемые теги в WordPress
Удаление неиспользуемых тегов — важный шаг к оптимизации и поддержанию чистоты базы данных WordPress. Это улучшает производительность, уменьшает размер базы, снижает риск ошибок и упрощает сопровождение сайта.
В статье мы рассмотрели, как найти неиспользуемые теги с помощью SQL-запросов, безопасно удалить их вручную, а также как автоматизировать процесс с помощью PHP-функции. Кроме того, были предложены плагины для удобной очистки базы данных, а также рекомендации по резервному копированию.
Следуя этим советам, вы сможете поддерживать свой сайт на WordPress в отличном состоянии и избежать накопления мусора в базе данных.