В процессе активного ведения сайта на WordPress часто накапливаются категории, которые перестают использоваться или становятся ненужными. Это может привести к засорению административной панели и усложнению навигации. В этой статье мы рассмотрим, как автоматически удалять такие неиспользуемые категории, используя кастомные функции и плагины.
Почему важно удалять неиспользуемые категории
С течением времени у сайта может появиться большое количество категорий, которые не содержат ни одной публикации. Они не улучшают SEO, не помогают посетителям ориентироваться по сайту и создают беспорядок в административной части. Автоматизация удаления таких категорий позволяет поддерживать чистоту и порядок без необходимости вручную искать и удалять их.
Кроме того, это помогает избежать ошибок при назначении категорий новым записям и упрощает работу редакторов.
Как определить неиспользуемые категории
В WordPress у каждой категории есть параметр count — количество записей, к которым она прикреплена. Если count равен нулю, значит категория пуста и может быть удалена.
Для автоматического удаления нам нужно получить список всех категорий с count = 0 и удалить их.
Получение пустых категорий
function wpdeveloper_get_empty_categories() {
$args = [
'hide_empty' => true,
'fields' => 'ids'
];
$used_categories = get_terms('category', $args);
$all_categories = get_terms('category', ['hide_empty' => false, 'fields' => 'ids']);
$empty_categories = array_diff($all_categories, $used_categories);
return $empty_categories;
}Здесь мы сначала получаем категории, которые используются (hide_empty = true), затем все категории, и вычисляем разницу — это и есть пустые категории.
Автоматическое удаление пустых категорий
Теперь добавим функцию, которая удалит все пустые категории из базы данных.
function wpdeveloper_delete_empty_categories() {
$empty_cats = wpdeveloper_get_empty_categories();
if (!empty($empty_cats)) {
foreach ($empty_cats as $cat_id) {
wp_delete_term($cat_id, 'category');
}
}
}
// Для автоматического удаления при загрузке админки
add_action('admin_init', 'wpdeveloper_delete_empty_categories');Этот код автоматически удалит пустые категории при каждом заходе в административную панель. При необходимости можно заменить хук admin_init на другой, или запускать функцию по крону.
Безопасность и резервное копирование
Перед автоматическим удалением рекомендуется делать резервные копии базы данных, чтобы избежать случайной потери данных. Также можно добавить дополнительное условие или подтверждение, чтобы удаление происходило только по вашему запросу.
Плагины для управления категориями
Если вы не хотите писать код, можно использовать плагины для управления категориями. Например, плагин Category Delete позволяет удалять пустые категории в ручном режиме.
Для автоматизации можно использовать плагин Clearfy Pro, который содержит множество функций оптимизации и очистки базы данных, в том числе работу с категориями.
Расширение функционала: уведомления и отчеты
Для более продвинутого использования можно добавить уведомления в админку о количестве удаленных категорий или вести лог удалений. Это поможет отслеживать изменения и быстро реагировать на возможные ошибки.
function wpdeveloper_delete_empty_categories_with_log() {
$empty_cats = wpdeveloper_get_empty_categories();
$deleted = 0;
if (!empty($empty_cats)) {
foreach ($empty_cats as $cat_id) {
if (wp_delete_term($cat_id, 'category')) {
$deleted++;
}
}
}
if ($deleted > 0) {
add_action('admin_notices', function() use ($deleted) {
echo '<div class="notice notice-success is-dismissible">';
echo '<p>Удалено пустых категорий: ' . esc_html($deleted) . '</p>';
echo '</div>';
});
}
}
add_action('admin_init', 'wpdeveloper_delete_empty_categories_with_log');Так вы видите результат работы функции сразу после входа в админку.
Выводы и рекомендации
Автоматизация удаления неиспользуемых категорий помогает поддерживать порядок на сайте без лишних усилий. Используйте приведённые функции, адаптируя их под свои задачи, или подключайте проверенные плагины, такие как Clearfy Pro, для комплексной оптимизации.
Помните о безопасности: перед массовым удалением делайте резервные копии и тестируйте код на тестовом сайте.