Пустые категории в WordPress возникают, когда у категории нет ни одного опубликованного поста. Они не только загромождают административную панель и навигацию сайта, но и могут негативно влиять на SEO и пользовательский опыт. В этой статье мы подробно разберём, как найти и удалить пустые категории, используя различные методы: от готовых плагинов до самостоятельного кода.
Почему важно удалять пустые категории в WordPress
Пустые категории создают лишнюю нагрузку на базу данных и усложняют структуру сайта. Если у вас много таких категорий, это может негативно повлиять на индексацию сайта поисковиками и запутать посетителей. Кроме того, пустые категории часто появляются после удаления или переноса контента, и их регулярное удаление помогает поддерживать порядок.
Оптимизация категорий — не только вопрос визуального удобства, но и часть поддержания здоровья сайта. Например, при использовании тем, которые автоматически выводят категории в меню или сайдбарах, пустые категории будут ссылками, ведущими в никуда, что ухудшает UX.
Использование плагинов для удаления пустых категорий
Плагин «Remove Empty Categories»
Один из самых простых способов — воспользоваться бесплатным плагином «Remove Empty Categories». Он автоматически находит категории без записей и позволяет быстро удалить их.
Преимущества:
- Простота установки и использования
- Автоматический поиск пустых категорий
- Удаление в один клик
Недостаток — плагин не всегда подходит для крупных сайтов с сотнями категорий, где удобнее использовать скрипты для более тонкой настройки.
Использование плагина Clearfy Pro для очистки таксономий
Если вы используете Clearfy Pro, в нем есть удобные инструменты для оптимизации таксономий, включая удаление пустых категорий. Этот плагин помогает не только удалять пустые категории, но и улучшать производительность сайта в целом.
Подробнее о Clearfy Pro можно узнать на официальном сайте.
Поиск и удаление пустых категорий через код
Если вы хотите контролировать процесс более детально, можно использовать код. Ниже представлен пример функции с префиксом wpcourse_, которая находит и удаляет пустые категории из базы данных.
function wpcourse_delete_empty_categories() {
$args = array(
'taxonomy' => 'category',
'hide_empty' => true,
'fields' => 'ids'
);
$non_empty_cats = get_terms($args);
$all_cats = get_terms(array('taxonomy' => 'category', 'hide_empty' => false, 'fields' => 'ids'));
$empty_cats = array_diff($all_cats, $non_empty_cats);
foreach ($empty_cats as $cat_id) {
wp_delete_term($cat_id, 'category');
}
return count($empty_cats);
}
// Используйте так, например, при активации плагина или вручную
add_action('admin_init', function() {
if (current_user_can('manage_options')) {
$deleted = wpcourse_delete_empty_categories();
if ($deleted) {
add_action('admin_notices', function() use ($deleted) {
echo '<div class="notice notice-success is-dismissible">Удалено пустых категорий: ' . intval($deleted) . '</div>';
});
}
}
});Функция сначала получает список всех категорий, а потом — только тех, в которых есть записи. Далее она вычисляет разницу и удаляет категории без записей. Такой подход безопасен, так как не трогает категории с контентом.
Как добавить кнопку для запуска очистки в админке
Чтобы упростить использование функции, можно добавить в админ-панель кнопку для запуска удаления пустых категорий вручную.
function wpcourse_add_admin_page() {
add_submenu_page(
'tools.php',
'Удалить пустые категории',
'Удалить пустые категории',
'manage_options',
'wpcourse-delete-empty-cats',
'wpcourse_admin_page_callback'
);
}
add_action('admin_menu', 'wpcourse_add_admin_page');
function wpcourse_admin_page_callback() {
if (isset($_POST['wpcourse_delete_empty'])) {
check_admin_referer('wpcourse_delete_empty_nonce');
$deleted = wpcourse_delete_empty_categories();
echo '<div class="notice notice-success is-dismissible">Удалено пустых категорий: ' . intval($deleted) . '</div>';
}
echo '<h2>Удалить пустые категории</h2>';
echo '<form method="post">';
wp_nonce_field('wpcourse_delete_empty_nonce');
echo '<input type="submit" name="wpcourse_delete_empty" class="button button-primary" value="Удалить пустые категории">';
echo '</form>';
}Так вы сможете запускать очистку по запросу, без необходимости заходить в базу данных напрямую.
Как избежать появления пустых категорий
Чтобы минимизировать появление пустых категорий, нужно соблюдать несколько рекомендаций:
- Перед удалением постов проверяйте, не останутся ли связанные категории пустыми.
- Используйте плагины и инструменты, которые автоматически поддерживают порядок, например, Clearfy Pro.
- Регулярно совершайте аудит категорий и таксономий на сайте.
- Автоматизируйте очистку с помощью Cron, запуская функцию удаления пустых категорий по расписанию.
Пример добавления Cron задачи для удаления пустых категорий еженедельно:
function wpcourse_schedule_weekly_delete_empty_categories() {
if (!wp_next_scheduled('wpcourse_weekly_delete_empty')) {
wp_schedule_event(time(), 'weekly', 'wpcourse_weekly_delete_empty');
}
}
add_action('wp', 'wpcourse_schedule_weekly_delete_empty_categories');
add_action('wpcourse_weekly_delete_empty', 'wpcourse_delete_empty_categories');Вывод
Удаление пустых категорий — важный аспект поддержки и оптимизации WordPress-сайта. Вы можете выбрать подходящий способ для себя: использовать готовые плагины, писать собственные функции или автоматизировать процесс с помощью Cron. В любом случае, регулярное удаление пустых категорий улучшит структуру сайта, повысит удобство для пользователей и поможет избежать проблем с SEO.
Если хотите подробнее узнать о плагинах для оптимизации WordPress, рекомендуем ознакомиться с Clearfy Pro — мощным инструментом для очистки и ускорения сайта.