В WordPress с течением времени накапливается большое количество категорий, многие из которых перестают использоваться. Это приводит к загромождению административной панели и усложняет навигацию по сайту. В этой статье рассмотрим, как автоматически находить и удалять категории, которые не привязаны ни к одной записи, с помощью плагинов и собственного кода.
Почему важно удалять неиспользуемые категории
Неиспользуемые категории — это не только визуальный мусор в админке, они могут создавать путаницу при выборе категорий для новых записей, мешать SEO за счёт создания лишних архивных страниц, а также замедлять работу при большом количестве элементов в базе данных.
Ручное удаление каждой категории — муторный процесс, особенно если категорий много. Автоматизация этого процесса — лучший путь к поддержанию порядка.
Использование плагинов для автоматического удаления пустых категорий
Плагин WPOptimize (https://wpshop.ru/plugins/wpoptimize/?utm_source=wpma.ru&utm_medium=article&utm_campaign=kak-avtomaticheski-udaljat-neispolzuemye-kategorii-v-wordpress)
WPOptimize — популярный плагин для очистки и оптимизации базы данных WordPress, который в том числе умеет удалять неиспользуемые таксономии. Чтобы удалить пустые категории, достаточно зайти в раздел оптимизации и использовать функцию очистки таксономий.
Преимущество плагина — он комплексно работает с базой данных и поддерживает создание резервных копий перед удалением.
Плагин Term Management Tools
Term Management Tools расширяет возможности работы с таксономиями. С его помощью можно быстро найти и удалить пустые категории и метки. Плагин удобен для регулярной чистки.
Автоматическое удаление пустых категорий с помощью кода
Для более тонкой настройки и интеграции в свой функционал сайта можно написать собственный код. Ниже пример функции, которая автоматически удаляет все категории без привязанных записей:
function wpma_remove_unused_categories() {
$args = array(
'taxonomy' => 'category',
'hide_empty' => false,
);
$categories = get_terms( $args );
foreach ( $categories as $category ) {
if ( 0 == $category->count && $category->term_id != get_option('default_category') ) {
wp_delete_term( $category->term_id, 'category' );
}
}
}
// Запускаем удаление при активации темы или вручную
// add_action('after_switch_theme', 'wpma_remove_unused_categories');
Эта функция получает все категории, проверяет количество записей в каждой, и если оно равно нулю, удаляет категорию, кроме категории по умолчанию, чтобы избежать ошибок.
Автоматизация через WP-Cron
Чтобы удалять пустые категории регулярно, можно добавить задание в WP-Cron:
function wpma_schedule_category_cleanup() {
if ( ! wp_next_scheduled( 'wpma_cleanup_unused_categories' ) ) {
wp_schedule_event( time(), 'daily', 'wpma_cleanup_unused_categories' );
}
}
add_action( 'wp', 'wpma_schedule_category_cleanup' );
add_action( 'wpma_cleanup_unused_categories', 'wpma_remove_unused_categories' );
Этот код запускает функцию удаления пустых категорий ежедневно. При необходимости частоту можно изменить.
Как избежать удаления нужных категорий
Иногда категории могут быть пустыми временно, например, если записи в них еще не опубликованы. Чтобы защитить важные категории, можно добавить их ID в исключения:
function wpma_remove_unused_categories_with_exceptions() {
$exclude_ids = array(1, 5, 10); // ID категорий, которые не удалять
$args = array(
'taxonomy' => 'category',
'hide_empty' => false,
);
$categories = get_terms( $args );
foreach ( $categories as $category ) {
if ( 0 == $category->count && ! in_array( $category->term_id, $exclude_ids ) ) {
wp_delete_term( $category->term_id, 'category' );
}
}
}
Такой подход гарантирует сохранность важных категорий.
Практические советы и рекомендации
- Перед массовым удалением категорий обязательно создайте резервную копию базы данных.
- Проверяйте, что категории действительно не используются — иногда записи могут быть в черновиках или отложены к публикации.
- Если у вас мультисайт, учитывайте, что категории могут быть индивидуальны для каждого сайта.
- Для удобства можно интегрировать очистку в админпанель с помощью собственного плагина или админ-страницы.
Заключение
Автоматическое удаление неиспользуемых категорий в WordPress помогает поддерживать чистоту и порядок в структуре сайта, улучшать навигацию для пользователей и снижать нагрузку на базу данных. Используйте готовые плагины, если хотите быстро решить задачу, или внедряйте собственный код для более гибкого управления. Регулярная чистка таксономий — залог стабильной и удобной работы вашего сайта.
Если хотите расширить функционал и автоматизировать другие процессы, обратите внимание на продукцию WPShop, например плагин Clearfy Pro для оптимизации и ускорения WordPress.