Пустые термины (категории, метки или любые таксономии без связанных записей) часто накапливаются в базе данных WordPress и могут создавать путаницу в админке и на сайте. Особенно это заметно, когда вы используете сложные таксономии для организации контента. В этой статье мы подробно разберём, как найти и удалить пустые термины программно и с помощью плагинов, а также рассмотрим примеры кода для автоматизации этой задачи.
Почему важно удалять пустые термины в WordPress
Пустые термины занимают место в базе данных и ухудшают организацию контента. Они могут:
- Засорять меню и виджеты, показывая ненужные элементы;
- Влиять на SEO, если пустые категории или метки индексируются поисковыми системами;
- Усложнять навигацию и администрирование сайта.
Регулярное удаление пустых терминов помогает поддерживать чистоту данных и ускорить работу сайта.
Как найти пустые термины в WordPress через интерфейс
В админке WordPress можно увидеть количество записей рядом с каждым термином. Если число равно нулю, термин пустой. Это простой способ, но если терминов много, искать вручную неудобно.
Для массового удаления можно использовать плагины или код.
Использование плагинов для удаления пустых терминов
Несколько плагинов позволяют работать с таксономиями и очищать пустые термины:
- Term Management Tools – расширяет возможности управления терминами, включая удаление пустых;
- WP Bulk Delete – позволяет создавать условия для массового удаления, в том числе пустых категорий и меток;
- Clearfy Pro – в наборе функций есть оптимизация базы и удаление мусорных терминов, что удобно при комплексной работе.
Для примера рассмотрим WP Bulk Delete:
После установки и активации перейдите в меню WP Bulk Delete > Taxonomy Terms и выберите критерий Count is 0 для нужной таксономии, затем запустите удаление. Это безопасно и удобно для администраторов.
Программное удаление пустых терминов: пример кода для wp-kurs.ru
Если вы хотите автоматизировать процесс удаления пустых терминов, можно использовать следующий пример кода, который удалит все категории без записей:
function wp_kurs_delete_empty_terms($taxonomy = 'category') {
$terms = get_terms(array(
'taxonomy' => $taxonomy,
'hide_empty' => false,
'fields' => 'ids',
));
if (empty($terms) || is_wp_error($terms)) {
return;
}
foreach ($terms as $term_id) {
$count = get_term($term_id, $taxonomy)->count;
if ($count == 0) {
wp_delete_term($term_id, $taxonomy);
}
}
}
// Пример вызова для категорий
wp_kurs_delete_empty_terms('category');Этот код получает все термины указанной таксономии (по умолчанию категории), проверяет количество связанных записей и удаляет те, что пусты. Аналогично можно вызвать функцию для меток или пользовательских таксономий.
Как использовать этот код безопасно
Рекомендуется запускать такую функцию через админский AJAX или при активации плагина, чтобы избежать нагрузки на сайт при каждом запросе. Вот пример запуска один раз при активации плагина:
register_activation_hook(__FILE__, function() {
wp_kurs_delete_empty_terms('category');
wp_kurs_delete_empty_terms('post_tag');
});Удаление пустых терминов из пользовательских таксономий
Если на вашем сайте есть кастомные таксономии, например, product_cat для WooCommerce или таксономии из плагина WPRemark, удаление пустых терминов аналогично. Просто передайте нужное имя таксономии в функцию.
Пример для таксономии product_cat:
wp_kurs_delete_empty_terms('product_cat');Это удобно, когда нужно поддерживать порядок и чистоту в магазинах и каталогах.
Автоматизация удаления пустых терминов по расписанию
Для регулярной очистки можно настроить WP-Cron, чтобы функция запускалась, например, раз в неделю:
function wp_kurs_schedule_empty_terms_cleanup() {
if (!wp_next_scheduled('wp_kurs_cleanup_empty_terms_hook')) {
wp_schedule_event(time(), 'weekly', 'wp_kurs_cleanup_empty_terms_hook');
}
}
add_action('wp', 'wp_kurs_schedule_empty_terms_cleanup');
add_action('wp_kurs_cleanup_empty_terms_hook', function() {
wp_kurs_delete_empty_terms('category');
wp_kurs_delete_empty_terms('post_tag');
// Добавьте другие таксономии при необходимости
});Такой подход позволяет не думать о ручной очистке и сохранять базу данных в чистоте.
Выводы и рекомендации
Удаление пустых терминов — важная часть поддержки сайта на WordPress. Используйте плагины для удобства, если не хотите писать код, или внедряйте автоматизацию через WP-Cron для крупных проектов. Код, приведённый выше, легко адаптируется под любые таксономии и задачи.
Для пользователей WPShop полезно знать, что в плагине Clearfy Pro предусмотрены функции оптимизации базы, включая работу с таксономиями. Подробнее о Clearfy Pro и других полезных инструментах можно узнать на wpshop.ru.