В WordPress по умолчанию при создании поста без указания категории он автоматически попадает в категорию "Без рубрики" (Uncategorized). Для многих сайтов это неудобно, так как такая категория не несет смысловой нагрузки и портит структуру. В этой статье мы подробно разберем, как удалить или заменить автоматическую категорию в WordPress, а также как вообще отключить автоматическое присвоение категорий с помощью собственного кода и плагинов.
Почему стоит убрать или изменить автоматическую категорию в WordPress
По умолчанию WordPress требует, чтобы у каждого поста была хотя бы одна категория. Если пользователь при создании записи не выбрал категорию, WordPress присваивает "Без рубрики". Это может привести к следующим проблемам:
- Плохая SEO-структура сайта — пустые категории с низкой релевантностью.
- Путаница для посетителей — категория "Без рубрики" ничего не объясняет.
- Сложности с фильтрацией и сортировкой контента.
Лучше либо изменить эту категорию по умолчанию на более подходящую, либо вовсе убрать автоматическое присвоение.
Как изменить категорию по умолчанию через админку WordPress
Самый простой способ — переназначить категорию по умолчанию. Для этого:
- Создайте новую категорию с подходящим названием (например, "Новости" или "Блог").
- Перейдите в
Консоль > Записи > Рубрики. - Найдите категорию, которую хотите сделать категорией по умолчанию, и скопируйте её ID.
- Откройте файл
functions.phpвашей темы или создайте плагин и добавьте следующий код:
function wpcoding_set_default_category() {
return 123; // Замените 123 на ID вашей категории
}
add_filter('pre_option_default_category', 'wpcoding_set_default_category');
Этот код изменит категорию по умолчанию на указанную.
Как полностью убрать автоматическую категорию "Без рубрики" из WordPress
Удалить категорию "Без рубрики" напрямую нельзя, так как она является системной. Но можно сделать так, чтобы при публикации поста без категории запись оставалась без категории вовсе или была автоматически переназначена на нужную. Для этого понадобится чуть более сложный код.
Пример функции, которая при сохранении поста проверит, есть ли у него категория, и если нет — удалит автоматическую категорию:
function wpcoding_remove_uncategorized($post_id) {
// Проверяем, не является ли это автосохранением
if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) {
return;
}
$categories = wp_get_post_categories($post_id);
$uncat_id = get_cat_ID('Без рубрики');
if (in_array($uncat_id, $categories)) {
// Если пост только с категорией "Без рубрики", удаляем её
wp_remove_object_terms($post_id, $uncat_id, 'category');
}
}
add_action('save_post', 'wpcoding_remove_uncategorized');
Этот код удалит категорию "Без рубрики" у записи, если она там есть. Но стоит учитывать, что WordPress требует, чтобы у записи была хотя бы одна категория — в этом случае запись останется без категории, что может повлиять на работу сайта и некоторые функции.
Дополнение: автоматическое назначение другой категории вместо "Без рубрики" без выбора
Если хотите, чтобы при отсутствии выбранных категорий пост автоматически попадал в нужную категорию, можно сделать так:
function wpcoding_auto_set_category($post_id) {
if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) {
return;
}
$categories = wp_get_post_categories($post_id);
if (empty($categories)) {
$new_cat_id = get_cat_ID('Новости'); // Замените на вашу категорию
if ($new_cat_id) {
wp_set_post_categories($post_id, array($new_cat_id));
}
}
}
add_action('save_post', 'wpcoding_auto_set_category');
Плагины для управления категориями и автоматизацией в WordPress
Если вы не хотите заниматься кодом, можно использовать плагины, которые помогут управлять категориями и назначением категорий по умолчанию.
- Default Category Editor — позволяет менять категорию по умолчанию из админки без кода.
- Term Management Tools — расширенный менеджер для таксономий и категорий.
- Clearfy Pro — плагин для оптимизации и чистки WordPress, в котором есть настройки для управления категориями и таксономиями.
Как проверить и очистить посты с категорией "Без рубрики" через WP-CLI
Для профессионалов есть вариант массового поиска и переназначения записей с категорией "Без рубрики" через WP-CLI, что ускорит работу на больших сайтах.
Команда для поиска таких постов:
wp post list --category=uncategorized --field=ID
Команда для переназначения категории (пример):
wp post term set <post_id> category <new_category_slug>
Где <post_id> — ID поста, а <new_category_slug> — слаг нужной категории.
Итоги
Удалять системную категорию "Без рубрики" напрямую нельзя, но можно изменить поведение WordPress, чтобы записи не попадали в нее автоматически, заменять ее или назначать другую категорию по умолчанию. Для этого подходят как простые настройки, так и кастомные решения на PHP. При работе с большим количеством записей рекомендуем использовать WP-CLI для массовых операций.