Пустые категории в WordPress — это те таксономии, в которых отсутствуют записи. Они могут создавать беспорядок в административной панели и на сайте, особенно если вы часто работаете с большим объемом контента. В этой статье разберём, как эффективно найти и удалить пустые категории с помощью как готовых плагинов, так и собственного кода.
Почему важно удалять пустые категории в WordPress
Пустые категории не несут никакой смысловой нагрузки для пользователей и могут негативно влиять на SEO, если они отображаются на сайте. Кроме того, наличие большого количества пустых категорий затрудняет администрирование сайта и усложняет навигацию.
Удаление таких категорий помогает:
- Сделать структуру сайта чище и логичнее.
- Уменьшить количество лишних URL, которые могут индексироваться поисковыми системами.
- Повысить удобство работы в админке.
Как найти пустые категории в WordPress через админку
В стандартной админке WordPress не предусмотрена возможность фильтровать категории по количеству записей. Однако, вы можете увидеть количество записей в каждой категории в разделе Записи – Рубрики. Если у категории указано 0 записей, значит она пустая.
Для массового удаления таких категорий вручную это неудобно, особенно если их много. Поэтому лучше использовать автоматизированные способы.
Удаление пустых категорий с помощью плагина
Один из простых способов — использовать плагин Remove Empty Categories. Он позволяет автоматически удалить все пустые категории за пару кликов.
Как работать с плагином:
- Установите и активируйте плагин через админку WordPress.
- Перейдите в Инструменты – Remove Empty Categories.
- Нажмите кнопку для удаления пустых категорий.
Плагин безопасен и быстро удаляет все категории без записей.
Удаление пустых категорий с помощью собственного кода
Если вы предпочитаете не устанавливать дополнительные плагины, можно написать функцию, которая автоматически удалит все пустые категории. Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:
function wpelement_delete_empty_categories() {
$empty_cats = get_terms(array(
'taxonomy' => 'category',
'hide_empty' => true
));
// Получаем все категории, включая пустые
$all_cats = get_terms(array(
'taxonomy' => 'category',
'hide_empty' => false
));
foreach ($all_cats as $cat) {
if (!in_array($cat->term_id, wp_list_pluck($empty_cats, 'term_id'))) {
wp_delete_term($cat->term_id, 'category');
}
}
}
// Запускаем функцию при необходимости, например через хук админки
add_action('admin_init', 'wpelement_delete_empty_categories');В этом коде мы сначала получаем категории, в которых есть записи (hide_empty => true), а затем из полного списка категорий удаляем те, которых нет в списке с записями, то есть пустые.
Важно: перед использованием такого кода сделайте резервную копию базы данных, чтобы избежать потери важных данных.
Автоматизация удаления пустых категорий по расписанию
Чтобы регулярно очищать сайт от пустых категорий, можно настроить автоматический запуск функции с помощью WP-Cron. Добавьте следующий код в functions.php:
function wpelement_schedule_empty_category_cleanup() {
if (! wp_next_scheduled('wpelement_cleanup_empty_categories_hook')) {
wp_schedule_event(time(), 'daily', 'wpelement_cleanup_empty_categories_hook');
}
}
add_action('wp', 'wpelement_schedule_empty_category_cleanup');
add_action('wpelement_cleanup_empty_categories_hook', 'wpelement_delete_empty_categories');Теперь функция wpelement_delete_empty_categories будет запускаться ежедневно и удалять пустые категории.
Советы по работе с таксономиями в WordPress
Кроме стандартных категорий, на сайте могут использоваться кастомные таксономии. Чтобы очистить пустые термины в них, измените параметр 'taxonomy' в функции get_terms.
Например, для таксономии product_cat в WooCommerce:
$empty_terms = get_terms(array(
'taxonomy' => 'product_cat',
'hide_empty' => true
));Если вы используете плагин Clearfy Pro, в нем есть функции для оптимизации и очистки таксономий, которые также помогут автоматизировать этот процесс с минимальными усилиями. Подробнее о плагине можно узнать на wpshop.ru.