В процессе управления сайтом на WordPress часто накапливаются категории, которые не содержат записей. Пустые категории не только создают беспорядок в админке, но и могут негативно повлиять на SEO и пользовательский опыт. В этой статье мы подробно разберем, как автоматически найти и удалить пустые категории с помощью PHP-кода, который можно добавить в functions.php вашей темы или в отдельный плагин.
Почему важно удалять пустые категории в WordPress
Пустые категории не несут никакой полезной информации для посетителей вашего сайта. Они могут запутать пользователя и снизить качество навигации. Кроме того, поисковые системы могут расценить большое количество пустых категорий как признак некачественного сайта, что негативно скажется на ранжировании.
Удаление пустых категорий поможет сделать структуру сайта более чистой и понятной, что улучшит как SEO, так и удобство пользователей.
Как определить пустые категории в WordPress
В WordPress у каждой категории есть свой параметр count — количество записей, относящихся к ней. Если этот параметр равен нулю, значит категория пустая.
Для получения списка категорий с их количеством записей можно использовать функцию get_categories() с параметром 'hide_empty' => false, чтобы получить все категории, в том числе пустые.
Пример получения всех категорий и фильтрации пустых
$categories = get_categories(array('hide_empty' => false));
$empty_cats = array();
foreach ($categories as $category) {
if ($category->count == 0) {
$empty_cats[] = $category;
}
}
В переменной $empty_cats окажется массив пустых категорий, готовых к удалению.
Код для удаления пустых категорий в WordPress
Удалять категории вручную неудобно, особенно если их много. Предлагаю функцию wplesson_delete_empty_categories(), которая автоматически удалит все пустые категории.
function wplesson_delete_empty_categories() {
$categories = get_categories(array(
'hide_empty' => false,
));
foreach ($categories as $category) {
if ($category->count == 0) {
wp_delete_category($category->term_id);
}
}
}
// Запускаем функцию один раз
add_action('admin_init', function() {
// Ограничиваем запуск только администраторам
if (current_user_can('manage_options')) {
wplesson_delete_empty_categories();
}
});
Этот код можно добавить в файл functions.php вашей темы или в свой плагин. Функция будет запускаться при заходе в админку и удалять все пустые категории.
Как безопасно использовать функцию удаления
Важно помнить, что удаление категорий — необратимая операция. Чтобы избежать случайных удалений, рекомендуется:
- Временно добавить функцию и зайти в админку один раз, чтобы удалить пустые категории, затем убрать функцию из кода.
- Перед удалением сделать резервную копию базы данных.
- Можно добавить дополнительное подтверждение через админ-страницу с кнопкой удаления.
Пример создания админ-страницы с кнопкой удаления пустых категорий
function wplesson_empty_cats_menu() {
add_submenu_page(
'tools.php',
'Удаление пустых категорий',
'Удалить пустые категории',
'manage_options',
'wplesson-empty-categories',
'wplesson_empty_cats_page'
);
}
add_action('admin_menu', 'wplesson_empty_cats_menu');
function wplesson_empty_cats_page() {
if (isset($_POST['wplesson_delete_empty_cats_nonce'])
&& wp_verify_nonce($_POST['wplesson_delete_empty_cats_nonce'], 'wplesson_delete_empty_cats')) {
wplesson_delete_empty_categories();
echo '<div class="updated notice">Пустые категории удалены.</div>';
}
?>
<div class="wrap">
<h1>Удаление пустых категорий</h1>
<form method="post">
<input type="hidden" name="wplesson_delete_empty_cats_nonce" value="<?php echo wp_create_nonce('wplesson_delete_empty_cats'); ?>" />
<p><input type="submit" class="button button-primary" value="Удалить пустые категории" /></p>
</form>
</div>
<?php
}
Этот код добавит в меню "Инструменты" админ-панели новую страницу с кнопкой, по нажатию на которую удалятся все пустые категории.
Альтернативные плагины для управления категориями
Если не хочется заниматься кодом, можно использовать плагины. Например:
- Category Clean Up — плагин для поиска и удаления пустых категорий.
- Clearfy Pro — многофункциональный плагин оптимизации, в том числе помогает управлять таксономиями.
Заключение
Удаление пустых категорий — простой и полезный способ поддерживать порядок на вашем WordPress-сайте. Используя приведенный код, вы сможете быстро очистить структуру категорий без лишних усилий. При необходимости можно расширить функционал, добавив интерфейс в админку для удобного управления.