В процессе работы с WordPress накапливаются категории, которые остаются пустыми — без записей. Такие категории не только захламляют админку, но и могут негативно влиять на SEO и удобство навигации пользователя. В этой статье мы разберём, как автоматически удалить пустые категории с помощью кода, а также рассмотрим альтернативные методы и полезные плагины.
Почему важно удалять пустые категории в WordPress
Пустые категории — это категории, в которых нет ни одной записи. Они:
- Могут создавать лишний шум в админке и усложнять управление контентом.
- Отрицательно влияют на SEO, так как поисковые системы видят страницы без полезного контента.
- Мешают пользователям при навигации по сайту, создавая пустые списки.
Удаление таких категорий помогает поддерживать структуру сайта в чистоте и улучшает пользовательский опыт.
Как найти пустые категории в WordPress
Для начала полезно узнать, какие категории являются пустыми. В WordPress у каждой категории есть поле count, показывающее количество записей в ней.
Вы можете получить список пустых категорий, выполнив следующий код в файле темы или плагина:
function wpmagazin_get_empty_categories() {
$empty_cats = get_categories(array(
'hide_empty' => true,
'fields' => 'ids'
));
$all_cats = get_categories(array(
'hide_empty' => false,
'fields' => 'ids'
));
$empty = array_diff($all_cats, $empty_cats);
return $empty;
}
$empty_categories = wpmagazin_get_empty_categories();
foreach ($empty_categories as $cat_id) {
$category = get_category($cat_id);
echo 'Пустая категория: ' . esc_html($category->name) . ' (ID: ' . $cat_id . ')<br>';
}Этот код сравнивает все категории с теми, которые содержат записи, и выводит список пустых.
Автоматическое удаление пустых категорий с помощью PHP-кода
Чтобы удалить пустые категории, можно использовать следующий скрипт. Рекомендуется выполнять его один раз или по расписанию через WP-Cron.
function wpmagazin_delete_empty_categories() {
$empty_cats = get_categories(array(
'hide_empty' => false,
'fields' => 'ids'
));
foreach ($empty_cats as $cat_id) {
$category = get_category($cat_id);
if (0 === (int) $category->count) {
wp_delete_category($cat_id);
}
}
}
// Запускаем при необходимости, например, через хук или вручную
// wpmagazin_delete_empty_categories();Этот код перебирает все категории и удаляет те, у которых количество записей равно нулю. Важно сделать резервную копию базы данных перед выполнением удаления.
Как запускать код безопасно
Чтобы не запускать удаление вручную с риском, можно добавить вызов функции по расписанию через WP-Cron или через интерфейс администратора с подтверждением.
Пример добавления задачи WP-Cron для запуска очистки раз в неделю:
function wpmagazin_schedule_empty_cat_cleanup() {
if (!wp_next_scheduled('wpmagazin_empty_cat_cleanup_event')) {
wp_schedule_event(time(), 'weekly', 'wpmagazin_empty_cat_cleanup_event');
}
}
add_action('wp', 'wpmagazin_schedule_empty_cat_cleanup');
add_action('wpmagazin_empty_cat_cleanup_event', 'wpmagazin_delete_empty_categories');Такой подход позволит поддерживать категории в актуальном состоянии без лишних усилий.
Использование плагинов для управления категориями
Если вы предпочитаете готовые решения, обратите внимание на плагины:
- Term Management Tools — позволяет массово удалять и объединять категории, в том числе пустые.
- WP Bulk Delete — плагин для массового удаления записей и таксономий с гибкими фильтрами.
Однако эти плагины могут быть избыточными, если нужна простая функция удаления пустых категорий. Тогда лучше использовать кастомный код, который мы рассмотрели выше.
Как избежать появления пустых категорий
В идеале стоит минимизировать создание пустых категорий. Для этого:
- Перед созданием категории продумывайте структуру и назначение.
- Удаляйте категории сразу после удаления записей в них.
- Автоматизируйте очистку с помощью WP-Cron и кастомных функций.
Если ваш сайт использует плагин Clearfy Pro, там есть инструменты для оптимизации таксономий и управления категориями, которые помогут поддерживать порядок.
Выводы и рекомендации
Удаление пустых категорий в WordPress — важная задача для поддержания чистоты структуры сайта и улучшения SEO. Благодаря простому PHP-коду вы можете автоматизировать этот процесс и не тратить время на ручное редактирование.
Обязательно тестируйте код в безопасной среде и делайте резервные копии. Если вы не уверены в своих силах, используйте проверенные плагины с функцией массового удаления.
Таким образом, поддержание актуальной и чистой категории помогает сделать сайт более удобным и эффективным.