В WordPress со временем накапливаются категории, которые не содержат ни одной записи. Такие пустые категории могут запутывать пользователей и ухудшать структуру сайта. В этой статье мы подробно разберем, как с помощью PHP кода автоматически находить и удалять пустые категории, чтобы поддерживать ваш сайт в порядке и оптимизировать работу с контентом.
Почему важно удалять пустые категории в WordPress
Пустые категории — это категории, у которых нет связанных постов. Они:
- Создают беспорядок в админке, усложняя навигацию по категориям;
- Могут негативно влиять на SEO, так как поисковые роботы индексируют пустые страницы;
- Ухудшают пользовательский опыт, если категории отображаются в меню или виджетах;
- Мешают аналитике и управлению контентом.
Удаление таких категорий — важный этап чистки и оптимизации сайта. Сделать это вручную неудобно, особенно если категорий много. Автоматизация с помощью PHP — лучший путь.
Использование WP_Query для поиска пустых категорий
Для начала нужно определить, какие категории пустые. Самый простой способ — получить все категории и проверить количество связанных с ними постов. В WordPress у объекта категории есть свойство count, которое показывает число записей в этой категории.
Ниже пример функции для получения пустых категорий:
function wp24_get_empty_categories() {
$empty_cats = array();
$categories = get_categories(array(
'hide_empty' => false
));
foreach ($categories as $cat) {
if ($cat->count == 0) {
$empty_cats[] = $cat->term_id;
}
}
return $empty_cats;
}Эта функция вернет массив ID категорий без постов. Теперь можно перейти к удалению.
Удаление пустых категорий программно
Для удаления категории в WordPress используется функция wp_delete_category(). Она удаляет категорию и корректно обрабатывает связи с постами (в нашем случае их нет, что упрощает задачу).
Создадим функцию, которая удалит все пустые категории на сайте:
function wp24_delete_empty_categories() {
$empty_cats = wp24_get_empty_categories();
if (empty($empty_cats)) {
return 'Пустых категорий не найдено.';
}
foreach ($empty_cats as $cat_id) {
wp_delete_category($cat_id);
}
return 'Удалено '.count($empty_cats).' пустых категорий.';
}Эту функцию удобно запускать вручную через админку или интегрировать в задачи cron для регулярного обслуживания.
Пример запуска через WP-CLI
Если у вас есть доступ к WP-CLI, можно написать кастомную команду для удаления пустых категорий. Это удобно для автоматизации и скриптов обслуживания.
wp eval 'echo wp24_delete_empty_categories();'Как добавить кнопку для удаления пустых категорий в админке WordPress
Чтобы сделать процесс удобнее для администраторов, можно добавить кнопку в панель управления, которая будет запускать удаление пустых категорий по нажатию.
Пример кода добавления страницы с кнопкой:
function wp24_add_empty_cat_page() {
add_submenu_page(
'tools.php',
'Удаление пустых категорий',
'Удаление пустых категорий',
'manage_options',
'wp24-empty-categories',
'wp24_empty_cat_page_callback'
);
}
add_action('admin_menu', 'wp24_add_empty_cat_page');
function wp24_empty_cat_page_callback() {
if (isset($_POST['wp24_delete_empty_cats_nonce']) && wp_verify_nonce($_POST['wp24_delete_empty_cats_nonce'], 'wp24_delete_empty_cats')) {
$result = wp24_delete_empty_categories();
echo '<div class="updated notice"><p>'.esc_html($result).'</p></div>';
}
echo '<div class="wrap"><h1>Удаление пустых категорий</h1>';
echo '<form method="post">';
wp_nonce_field('wp24_delete_empty_cats', 'wp24_delete_empty_cats_nonce');
echo '<p><input type="submit" class="button button-primary" value="Удалить пустые категории" /></p>';
echo '</form></div>';
}Этот код добавит в меню «Инструменты» страницу с кнопкой, при нажатии на которую будут удалены все пустые категории.
Советы по безопасности и бэкапу перед удалением
Перед автоматическим удалением категорий важно:
- Сделать резервную копию базы данных, чтобы можно было восстановить данные в случае ошибки;
- Проверять права пользователя, чтобы только администраторы могли запускать удаление;
- Использовать nonce для защиты форм от CSRF-атак, как показано в примере выше;
- Тестировать функции на тестовом сайте, прежде чем применять на рабочем.
Альтернативы: плагины для очистки категорий
Если писать код не хочется, можно использовать плагины, например:
- Clearfy Pro — многофункциональный плагин для оптимизации и очистки сайта, в том числе удаления пустых категорий;
- Плагины по очистке таксономий, которые позволяют управлять категориями и тегами через интерфейс.
Однако программное решение дает гибкость и возможность интегрировать очистку в рабочие процессы и скрипты обслуживания.
Итог
Удаление пустых категорий в WordPress — простая, но важная задача для поддержания порядка и оптимизации сайта. С помощью PHP кода можно автоматизировать этот процесс, сделать его удобным и безопасным. Используйте приведенные примеры и рекомендации, чтобы легко справиться с этой задачей на вашем сайте.