Функция wp_set_post_categories()
используется для назначения одной или нескольких категорий к записи в WordPress. По умолчанию, если не указаны категории, пост будет прикреплен к категории по умолчанию. Эта функция позволяет заменить все существующие категории поста новыми или добавить их к существующим.
wp_set_post_categories( int $post_id, int[]|int $post_categories = array(), bool $append = false ): array|false|WP_Error
Аргументы
$post_id
(int, обязательный): ID поста, для которого назначаются категории. По умолчанию равен 0 и не использует глобальную переменную$post
.$post_categories
(int[]|int, опциональный): Массив ID категорий или одиночный ID категории, которые нужно назначить посту. Если параметр не указан, пост будет прикреплен к категории по умолчанию.$append
(bool, опциональный): Логический флаг, который определяет, нужно ли добавлять новые категории к существующим или заменять их. Еслиtrue
, новые категории добавляются к текущим. Еслиfalse
, все старые категории будут заменены новыми. По умолчаниюfalse
.
Возвращаемое значение
Функция возвращает:
- Массив — массив ID категорий, которые были назначены посту.
false
— в случае ошибки, если$post_id
не является числом или равен 0.WP_Error
— если произошла ошибка в процессе назначения категорий.
Примечания
- Если переданы некорректные ID категорий, они будут исключены перед обновлением объекта.
- Если функция вызывается для поста, и категории не указаны, WordPress автоматически прикрепит пост к категории по умолчанию.
- Функция работает на основе
wp_set_object_terms()
и может использоваться для работы с произвольными таксономиями.
1. Перемещение поста в другую категорию
В этом примере пост с ID 50 перемещается в категорию с ID 1. Все ранее присвоенные категории будут заменены.
$post_id = 50; // ID поста
$category_id = array( 1 ); // ID категории
wp_set_post_categories( $post_id, $category_id );
2. Добавление категории к существующим
Если нужно добавить новую категорию к существующим, используем параметр $append
со значением true
. В этом примере мы добавляем категорию с ID 5 к посту с ID 50, сохраняя текущие категории.
$post_id = 50; // ID поста
$category_id = array( 5 ); // ID новой категории
wp_set_post_categories( $post_id, $category_id, true );
3. Установка нескольких категорий
Здесь пост с ID 75 привязывается сразу к нескольким категориям — 2, 3 и 4. Все ранее назначенные категории заменяются.
$post_id = 75;
$categories = array( 2, 3, 4 ); // Массив ID категорий
wp_set_post_categories( $post_id, $categories );
4. Использование категории по умолчанию
Если не указать категории, WordPress автоматически прикрепит пост к категории по умолчанию. Это может быть полезно для создания постов, если категории еще не определены.
$post_id = 100;
wp_set_post_categories( $post_id ); // Пост будет прикреплен к категории по умолчанию
Заключение
Функция wp_set_post_categories()
— это удобный инструмент для управления категориями постов в WordPress. Она позволяет легко заменять или добавлять категории, а также автоматически привязывать посты к категории по умолчанию.