Пустые категории в WordPress могут создавать лишний шум в админке и мешать удобной навигации по сайту. Особенно это актуально для больших проектов с большим количеством записей и категорий. В этой статье мы подробно рассмотрим, как автоматически находить и удалять пустые категории с помощью собственного кода, без установки дополнительных плагинов.
Почему важно удалять пустые категории в WordPress
Если категория не содержит записей, она не несет ценности для пользователей и SEO. Такие категории могут:
- загромождать меню и списки категорий;
- создавать дублированные страницы архивов с пустым содержимым;
- усложнять управление сайтом для редакторов;
- негативно влиять на внутреннюю структуру ссылок.
Удаление пустых категорий помогает держать структуру сайта чистой и упрощает работу с контентом.
Как определить пустые категории программно
WordPress хранит категории как термины таксономии category. Для каждой категории можно получить количество записей с помощью свойства count. Если значение count равно нулю, категория пустая.
Чтобы получить список пустых категорий, можно использовать функцию get_categories() с параметром 'hide_empty' => false для получения всех категорий, а затем отфильтровать по count == 0.
function wpto_get_empty_categories() {
$categories = get_categories(array(
'hide_empty' => false
));
$empty_cats = array();
foreach ($categories as $cat) {
if ($cat->count == 0) {
$empty_cats[] = $cat;
}
}
return $empty_cats;
}Как удалить пустые категории с помощью PHP-кода
Для удаления категории в WordPress используется функция wp_delete_term(). Нужно передать ID категории и таксономию (в нашем случае category).
Ниже пример функции, которая удаляет все пустые категории автоматически:
function wpto_delete_empty_categories() {
$empty_cats = wpto_get_empty_categories();
foreach ($empty_cats as $cat) {
wp_delete_term($cat->term_id, 'category');
}
}Вы можете вызвать эту функцию вручную из темы (например, через functions.php) или создать WP-CLI команду для регулярного запуска.
Добавление кнопки удаления пустых категорий в админке WordPress
Чтобы упростить процесс удаления пустых категорий, можно добавить кнопку в админку, которая при нажатии запускает очистку.
Пример кода для добавления кнопки на страницу Категорий:
add_action('restrict_manage_posts', 'wpto_add_delete_empty_button');
function wpto_add_delete_empty_button() {
if ('category' !== get_current_screen()->taxonomy) return;
?>
<form method="post" style="display:inline; margin-left:10px;">
<input type="hidden" name="wpto_delete_empty_categories" value="1">
<input type="submit" class="button button-secondary" value="Удалить пустые категории">
</form>
<?php
}
add_action('admin_init', 'wpto_handle_delete_empty_categories');
function wpto_handle_delete_empty_categories() {
if (!empty($_POST['wpto_delete_empty_categories']) && current_user_can('manage_categories')) {
wpto_delete_empty_categories();
wp_redirect(admin_url('edit-tags.php?taxonomy=category&deleted_empty=1'));
exit;
}
}Этот код добавит кнопку на страницу редактирования категорий. После нажатия все пустые категории будут удалены, и вы увидите обновленную страницу.
Использование плагинов для управления категориями
Если вы не хотите писать код, можно использовать плагины. Например, Remove Empty Categories позволяет быстро найти и удалить пустые категории.
Однако написанный выше код более гибкий и позволяет встроить функционал в тему или плагин, а также автоматизировать процесс.
Практические рекомендации и предосторожности
Перед удалением категорий рекомендуется сделать резервную копию базы данных, чтобы избежать потери данных.
Учтите, что удаление категории не удаляет записи — они просто перестают быть связаны с этой категорией.
Можно расширить функционал, например, отправлять уведомления администратору или вести лог удалений.
Итог
Удаление пустых категорий помогает поддерживать чистоту и удобство управления в WordPress. Используя приведенный код, вы сможете быстро находить и удалять ненужные категории без плагинов.
Для удобной работы с категоризациями и другими настройками советую также посмотреть решения на WPSHOP.ru, где есть много полезных инструментов для оптимизации WordPress.