В процессе управления контентом WordPress часто возникает необходимость автоматически создавать категории и подкатегории, особенно при массовом импортировании или генерации записей. В этой статье разберём, как с помощью кода автоматически добавлять категории и подкатегории в WordPress, что позволит значительно упростить работу с таксономиями и автоматизировать рутинные задачи.
Почему важно автоматизировать создание категорий в WordPress
Категории и подкатегории помогают структурировать контент, делают сайт удобнее для пользователей и поисковых систем. При ручном создании большого количества категорий легко допустить ошибки или забыть важные связи между ними. Автоматизация позволяет:
- Экономить время при массовой загрузке контента.
- Обеспечить единообразие названий и иерархии.
- Минимизировать ошибки при создании и связях категорий.
- Быстро обновлять структуру таксономий при изменениях.
Далее рассмотрим, как реализовать автоматическое создание категорий и подкатегорий с помощью PHP-функций WordPress.
Использование функции wprobot_create_terms для создания категорий и подкатегорий
Создадим функцию wprobot_create_terms, которая принимает массив категорий и подкатегорий и создаёт их в нужной иерархии.
function wprobot_create_terms($terms) {
foreach ($terms as $term) {
$parent_id = 0;
if (isset($term['parent'])) {
$parent_term = term_exists($term['parent'], 'category');
if ($parent_term) {
$parent_id = $parent_term['term_id'];
} else {
// Создаём родительскую категорию, если её нет
$parent = wp_insert_term($term['parent'], 'category');
if (!is_wp_error($parent)) {
$parent_id = $parent['term_id'];
}
}
}
// Проверяем существует ли категория
if (!term_exists($term['name'], 'category')) {
wp_insert_term($term['name'], 'category', ['parent' => $parent_id]);
}
}
}В этом коде функция принимает массив, где каждый элемент — это массив с ключами name и опциональным parent. Если родительская категория указана и отсутствует, она создаётся автоматически.
Пример массива категорий и вызова функции
$categories = [
['name' => 'Новости'],
['name' => 'Технологии', 'parent' => 'Новости'],
['name' => 'Обзоры', 'parent' => 'Новости'],
['name' => 'WordPress'],
['name' => 'Плагины', 'parent' => 'WordPress']
];
wprobot_create_terms($categories);Этот код создаст категорию "Новости" с подкатегориями "Технологии" и "Обзоры", а также категорию "WordPress" с подкатегорией "Плагины".
Обработка ошибок и проверка существования категорий
Важно учитывать, что функции wp_insert_term и term_exists могут возвращать ошибки. В примере выше происходит базовая проверка. Для более надёжной работы можно добавить логирование ошибок и обработку исключений.
Например, можно расширить функцию так:
function wprobot_create_terms($terms) {
foreach ($terms as $term) {
$parent_id = 0;
if (isset($term['parent'])) {
$parent_term = term_exists($term['parent'], 'category');
if ($parent_term) {
$parent_id = $parent_term['term_id'];
} else {
$parent = wp_insert_term($term['parent'], 'category');
if (is_wp_error($parent)) {
error_log('Ошибка создания родительской категории: ' . $parent->get_error_message());
continue;
} else {
$parent_id = $parent['term_id'];
}
}
}
if (!term_exists($term['name'], 'category')) {
$result = wp_insert_term($term['name'], 'category', ['parent' => $parent_id]);
if (is_wp_error($result)) {
error_log('Ошибка создания категории: ' . $result->get_error_message());
}
}
}
}Такой подход позволит отслеживать и исправлять возможные проблемы при создании категорий.
Автоматизация создания категорий при импорте записей с плагином WPGPT
Если на сайте используется плагин WPGPT для генерации контента с помощью искусственного интеллекта, можно расширить процесс, чтобы автоматически создавать необходимые категории и привязывать к ним новые записи.
Пример интеграции:
add_action('wpgpt_after_post_generate', 'wprobot_assign_categories_to_post', 10, 2);
function wprobot_assign_categories_to_post($post_id, $post_data) {
$categories = [
['name' => 'AI Новости'],
['name' => 'Генерация контента', 'parent' => 'AI Новости'],
];
wprobot_create_terms($categories);
$term = get_term_by('name', 'Генерация контента', 'category');
if ($term && !is_wp_error($term)) {
wp_set_post_categories($post_id, [$term->term_id], true);
}
}Этот код создаёт категории, если их нет, и автоматически назначает их сгенерированным записям, что помогает поддерживать порядок при большом объёме контента.
Рекомендации по использованию и расширению
При автоматическом создании категорий важно:
- Убедиться, что названия категорий уникальны и понятны.
- Оптимизировать вызовы функции, чтобы не создавать дубликаты.
- Добавлять проверку прав пользователя, если функция вызывается из интерфейса.
- Использовать хуки WordPress для интеграции с другими плагинами и процессами.
Также можно расширить функционал, добавив автоматическое создание описаний категорий, слагов и других параметров.
Заключение
Автоматическое создание категорий и подкатегорий в WordPress с помощью собственного кода — мощный инструмент для оптимизации работы с контентом. Используя приведённые примеры и рекомендации, вы сможете легко интегрировать такую функциональность в свои проекты и автоматизировать рутинные задачи, связанные с управлением таксономиями.
Для удобной работы с плагинами и расширениями рекомендую ознакомиться с продукцией WPSHOP, которая предлагает качественные решения для автоматизации WordPress.