В WordPress с течением времени накапливаются пустые или неиспользуемые термины — категории, метки или термины кастомных таксономий, которые не связаны ни с одним постом. Они занимают место в базе данных, могут замедлять работу сайта и создавать путаницу при администрировании. В этой статье мы подробно разберём, как найти и удалить такие термины с помощью готовых плагинов и собственных функций на PHP.
Почему важно удалять пустые и неиспользуемые термины
Часто при создании и редактировании контента вы добавляете категории и метки, а затем удаляете записи, к которым они были прикреплены. Термины остаются в базе данных без привязки к постам. Со временем их количество может вырасти до сотен и даже тысяч.
Это приводит к следующим проблемам:
- Увеличение размера базы данных и замедление запросов.
- Перегрузка административной панели WordPress — список терминов становится громоздким.
- Ошибки и недоразумения при выборе таксономий для новых записей.
Регулярное удаление пустых терминов помогает держать базу данных в порядке и ускоряет работу сайта.
Как определить пустые термины в WordPress
Термин считается пустым, если у него count = 0 — то есть он не связан ни с одной записью. Это можно проверить с помощью SQL-запроса напрямую в базе данных или через PHP-функции.
Пример SQL-запроса для получения пустых терминов из категории (taxonomy = 'category'):
SELECT term_id, name FROM wp_terms
INNER JOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE wp_term_taxonomy.taxonomy = 'category' AND wp_term_taxonomy.count = 0;
Этот запрос покажет список категорий без записей. Аналогично можно проверить и другие таксономии.
Удаление пустых терминов с помощью плагинов
Если вы не хотите писать код, можно использовать плагины, которые автоматически находят и удаляют пустые термины.
Рекомендуемые плагины:
- Term Management Tools — позволяет массово удалять термины, объединять и исправлять их.
- WP-Optimize — комплексный плагин для оптимизации базы данных, включая удаление неиспользуемых терминов.
Плагины удобны, но не всегда дают полный контроль. Если нужно удалить термины в определённых таксономиях или с дополнительной логикой, лучше использовать кастомный код.
Удаление пустых терминов с помощью PHP — пример функции wpcheckerDeleteEmptyTerms()
Ниже приведён пример функции, которая удаляет пустые термины из переданных таксономий. Функция делает запрос всех терминов с count = 0 и удаляет их через wp_delete_term().
function wpcheckerDeleteEmptyTerms($taxonomies = array('category', 'post_tag')) {
foreach ($taxonomies as $taxonomy) {
$terms = get_terms(array(
'taxonomy' => $taxonomy,
'hide_empty' => true
));
if (is_wp_error($terms)) {
continue;
}
$all_terms = get_terms(array(
'taxonomy' => $taxonomy,
'hide_empty' => false
));
foreach ($all_terms as $term) {
if ($term->count === 0) {
wp_delete_term($term->term_id, $taxonomy);
}
}
}
}
Эту функцию можно запускать в админке через хук или вручную, чтобы очистить базу от пустых терминов.
Пример запуска функции через WP-CLI
Если у вас есть доступ к WP-CLI, можно зарегистрировать команду для удобного вызова:
if (defined('WP_CLI') && WP_CLI) {
WP_CLI::add_command('wpchecker delete-empty-terms', function() {
wpcheckerDeleteEmptyTerms();
WP_CLI::success('Пустые термины удалены.');
});
}
Команду wp checker delete-empty-terms можно запускать из терминала для обслуживания сайта.
Оптимизация и рекомендации
Перед удалением терминов обязательно сделайте резервную копию базы данных, чтобы избежать потери важных данных.
Регулярно проверяйте и удаляйте пустые термины, особенно если у вас большой контент и много таксономий.
Для автоматизации можно использовать планировщик задач (WP Cron), вызывающий функцию очистки, например, раз в неделю.
Пример автоматического запуска очистки по расписанию
function wpcheckerScheduleEmptyTermCleanup() {
if (!wp_next_scheduled('wpchecker_empty_term_cleanup')) {
wp_schedule_event(time(), 'weekly', 'wpchecker_empty_term_cleanup');
}
}
add_action('wp', 'wpcheckerScheduleEmptyTermCleanup');
add_action('wpchecker_empty_term_cleanup', function() {
wpcheckerDeleteEmptyTerms();
});
Заключение
Удаление пустых и неиспользуемых терминов — важная часть обслуживания WordPress-сайта. Это помогает уменьшить размер базы данных, повысить скорость работы и упростить структуру таксономий. В статье мы рассмотрели, как находить такие термины, использовать плагины и писать собственные функции для их удаления. Используйте эти методы, чтобы ваш сайт на WordPress работал быстрее и стабильнее.
Для более комплексной оптимизации базы данных и управления метаданными рекомендуем обратить внимание на плагин Clearfy Pro, который включает инструменты для очистки и оптимизации.