Функция 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. Она позволяет легко заменять или добавлять категории, а также автоматически привязывать посты к категории по умолчанию.