Автоматическое создание категорий и подкатегорий в WordPress с помощью кода

|

В процессе разработки и поддержки бизнес-сайтов на WordPress часто возникает задача массового создания категорий и подкатегорий для упорядочивания контента. Особенно это актуально, если требуется импортировать большую структуру таксономий, например, при миграции с других CMS или при подготовке шаблонов для новых проектов.

Зачем нужно автоматическое создание категорий и подкатегорий в WordPress

Создавать категории вручную через админку достаточно долго и неудобно, особенно если их много. Автоматизация этого процесса экономит время и уменьшает вероятность ошибок, связанных с опечатками или неправильной иерархией.

Кроме того, автоматическое создание категорий позволяет:

Для бизнес-сайтов, где важна правильная организация контента и удобство навигации, это особенно полезно.

Как работает создание категорий в WordPress через код

WordPress предоставляет функцию wp_insert_term(), которая позволяет программно создавать термины — категории, метки или любые другие таксономии. С её помощью можно определить название категории, её слаг (URL-идентификатор), описание и родительскую категорию (для подкатегорий).

Пример простого создания категории:

wp_insert_term(
    'Новинки', // Название категории
    'category' // Таксономия
);

Но если нужно создавать сразу иерархическую структуру из категорий и подкатегорий, лучше написать функцию, которая будет создавать сначала родительские категории, а затем дочерние, указывая родителя через параметр parent.

Пример функции для автоматического создания категорий и подкатегорий

Рассмотрим пример, который можно вставить в файл functions.php вашей темы или оформить в виде плагина. Функция wpbusiness_create_categories() создаёт заданную структуру категорий:

function wpbusiness_create_categories() {
    // Массив с категориями и подкатегориями
    $categories = [
        'Продукты' => [
            'Ноутбуки',
            'Смартфоны',
            'Аксессуары'
        ],
        'Услуги' => [
            'Ремонт',
            'Консультации'
        ],
        'Новости' => []
    ];

    foreach ($categories as $parent_name => $children) {
        // Проверяем, существует ли уже категория
        $parent_term = term_exists($parent_name, 'category');
        if (!$parent_term) {
            $parent_term = wp_insert_term($parent_name, 'category');
            if (is_wp_error($parent_term)) {
                continue; // Если ошибка, пропускаем
            }
        }

        $parent_id = is_array($parent_term) ? $parent_term['term_id'] : $parent_term;

        // Создаём подкатегории
        foreach ($children as $child_name) {
            $child_term = term_exists($child_name, 'category');
            if (!$child_term) {
                wp_insert_term($child_name, 'category', ['parent' => $parent_id]);
            }
        }
    }
}

// Пример вызова функции при активации темы
add_action('after_setup_theme', 'wpbusiness_create_categories');

В этом примере мы задали три родительские категории и несколько подкатегорий. Функция проверяет, не существует ли категория с таким именем, чтобы не создавать дубликаты.

Как безопасно запускать автоматическое создание категорий

Не рекомендуется запускать функции создания категорий при каждой загрузке сайта, так как это может привести к лишним запросам и ненужным проверкам. Лучше запускать такую функцию однократно, например, при активации темы или плагина. Для этого используется хук after_setup_theme или register_activation_hook в плагинах.

Также можно добавить условие, чтобы функция запускалась только при определённых условиях или вручную через админку, например, через AJAX или создание специальной страницы с кнопкой.

Практические советы и оптимизация

Если количество категорий и подкатегорий очень большое (сотни или тысячи), лучше формировать структуру в виде массива или JSON и обрабатывать частями, чтобы избежать превышения лимитов PHP и нагрузки на сервер.

Для бизнес-сайтов с большим объёмом контента рекомендуем использовать плагины для управления таксономиями и импортом, например, Clearfy Pro, который помогает оптимизировать работу с таксономиями и удалить избыточные категории.

Если нужно создавать категории с дополнительными метаданными или особым функционалом, можно расширять функцию, используя add_term_meta() для добавления метаданных к категориям сразу после их создания.

Пример расширенной функции с добавлением метаданных к категориям

function wpbusiness_create_categories_with_meta() {
    $categories = [
        [
            'name' => 'Продукты',
            'description' => 'Все товары нашего магазина',
            'children' => [
                ['name' => 'Ноутбуки', 'description' => 'Различные модели ноутбуков'],
                ['name' => 'Смартфоны', 'description' => 'Смартфоны разных брендов'],
            ]
        ],
        [
            'name' => 'Блог',
            'description' => 'Новости и статьи',
            'children' => []
        ]
    ];

    foreach ($categories as $cat) {
        $parent_term = term_exists($cat['name'], 'category');
        if (!$parent_term) {
            $parent_term = wp_insert_term($cat['name'], 'category', ['description' => $cat['description']]);
            if (is_wp_error($parent_term)) continue;
        }
        $parent_id = is_array($parent_term) ? $parent_term['term_id'] : $parent_term;

        // Добавляем метаданные к родительской категории
        add_term_meta($parent_id, 'custom_description', $cat['description'], true);

        foreach ($cat['children'] as $child) {
            $child_term = term_exists($child['name'], 'category');
            if (!$child_term) {
                $child_term = wp_insert_term($child['name'], 'category', [
                    'parent' => $parent_id,
                    'description' => $child['description']
                ]);
                if (!is_wp_error($child_term)) {
                    $child_id = $child_term['term_id'];
                    add_term_meta($child_id, 'custom_description', $child['description'], true);
                }
            }
        }
    }
}

add_action('after_setup_theme', 'wpbusiness_create_categories_with_meta');

В этом варианте мы добавляем описание и метаданные к каждой категории, что может пригодиться для дальнейшей кастомизации вывода.

Заключение

Автоматическое создание категорий и подкатегорий через код — мощный инструмент для разработчика WordPress, особенно на бизнес-сайтах с большой структурой контента. Используя функции WordPress, можно быстро и безопасно создавать иерархии таксономий, расширять их метаданными и интегрировать с другими элементами сайта.

Для ещё более продвинутой работы с таксономиями рекомендуем обратить внимание на плагины из WPSHOP, которые помогают оптимизировать и автоматизировать управление категориями и другими элементами сайта.

Как правильно использовать хуки в WordPress для бизнес-сайтов
22.12.2025
Как автоматизировать управление комментариями в WordPress: практическое руководство с примерами кода
25.01.2026
Как отключить автообновление плагинов WordPress без риска для безопасности
14.06.2026
Как создать собственный виджет WordPress с примерами кода
04.11.2025
Как автоматизировать управление ролями в WordPress с примерами кода
18.12.2025
×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙