В процессе ведения сайта на WordPress часто накапливаются пустые категории — те, которые не содержат ни одной записи. Это может привести к путанице для пользователей и ухудшить структуру сайта. В этой статье рассмотрим, как найти и удалить такие категории с помощью PHP-кода и стандартных функций WordPress.
Почему важно удалять пустые категории в WordPress
Пустые категории не несут полезной информации для посетителей сайта и могут негативно влиять на SEO. Поисковые системы считают такие страницы низкокачественными, что может снизить рейтинг сайта. Кроме того, пустые категории затрудняют навигацию и администрирование контента.
Удаление пустых категорий помогает:
- Поддерживать чистоту структуры таксономий.
- Улучшить пользовательский опыт.
- Оптимизировать работу административной панели.
Как найти пустые категории в WordPress программно
Для поиска пустых категорий мы можем использовать функцию get_categories() с параметром 'hide_empty' => true или наоборот, для получения пустых категорий — 'hide_empty' => false с последующей фильтрацией.
Пример кода для поиска категорий с количеством записей 0:
function wpmanual_get_empty_categories() {
$all_cats = get_categories(array(
'hide_empty' => false
));
$empty_cats = array();
foreach ($all_cats as $cat) {
if ($cat->count === 0) {
$empty_cats[] = $cat;
}
}
return $empty_cats;
}Данная функция возвращает массив объектов категорий, у которых нет записей.
Удаление пустых категорий программно
После того, как мы получили список пустых категорий, можно удалить их с помощью функции wp_delete_category(). Эта функция принимает ID категории и удаляет ее из базы данных.
Пример удаления всех пустых категорий с проверкой безопасности:
function wpmanual_delete_empty_categories() {
if (!current_user_can('manage_categories')) {
return; // Проверка прав пользователя
}
$empty_cats = wpmanual_get_empty_categories();
foreach ($empty_cats as $cat) {
wp_delete_category($cat->term_id);
}
}Для запуска удаления можно повесить вызов этой функции на админский хук, например, admin_init, либо сделать кнопку в админке через кастомный плагин.
Пример создания админского инструмента для удаления пустых категорий
Создадим простой плагин, который добавит в меню администратора страницу с кнопкой для удаления пустых категорий.
/**
* Plugin Name: WPManual Удаление пустых категорий
* Description: Позволяет удалить все пустые категории одним кликом
* Version: 1.0
* Author: WPManual
*/
// Добавляем пункт меню
add_action('admin_menu', function() {
add_submenu_page(
'tools.php',
'Удалить пустые категории',
'Удалить пустые категории',
'manage_categories',
'wpmanual-delete-empty-cats',
'wpmanual_render_delete_empty_cats_page'
);
});
function wpmanual_render_delete_empty_cats_page() {
if (isset($_POST['wpmanual_delete_empty_cats_nonce']) && wp_verify_nonce($_POST['wpmanual_delete_empty_cats_nonce'], 'wpmanual_delete_empty_cats')) {
wpmanual_delete_empty_categories();
echo '<div class="updated notice">Пустые категории успешно удалены.</div>';
}
echo '<h1>Удалить пустые категории</h1>';
echo '<form method="post">';
wp_nonce_field('wpmanual_delete_empty_cats', 'wpmanual_delete_empty_cats_nonce');
echo '<p><input type="submit" class="button button-primary" value="Удалить пустые категории" /></p>';
echo '</form>';
}Этот плагин добавляет в раздел «Инструменты» админки новую страницу, где можно нажатием кнопки удалить все категории без записей.
Альтернативные способы и плагины для очистки категорий
Если вы не хотите писать код, существуют плагины, которые могут помочь с управлением таксономиями. Например:
- Term Management Tools — позволяет массово редактировать и удалять категории.
- Clearfy Pro — плагин оптимизации, в котором есть инструменты для очистки базы и таксономий.
Использование готовых решений удобно, но программный подход позволяет встроить удаление в свои процессы и автоматизировать.
Советы по предотвращению появления пустых категорий
Чтобы минимизировать появление пустых категорий:
- Проверяйте категории при создании новых записей.
- Используйте плагин WPRemark для управления метками и категориями.
- Периодически проводите аудит таксономий с помощью кода или плагинов.
Также можно добавлять предупреждения в админке, если создаётся категория без записей, чтобы сразу принять меры.