## WP_SET_POST_CATEGORIES() │ WP 2.1.0
Функция для установки категорий для записи.
Если категории не указаны, будет использована категория по умолчанию.
### Изучаем функцию
Функция использует: wp_set_post_terms() для установки категорий.
### Хуки функции
- default_category_post_types — используется для фильтрации постов, которые требуют категорию по умолчанию.
### Возвращаемое значение
Функция возвращает массив идентификаторов категорий, если всё прошло успешно. В случае ошибки возвращается WP_Error или false.
### Использование функции
Вот как выглядит вызов функции:
```php
wp_set_post_categories( $post_id, $post_categories, $append );
- $post_id (int) — Идентификатор записи. Не используется ID глобальной переменной
$post. - $post_categories (int[]|int) — Массив идентификаторов категорий или ID одной категории.
- По умолчанию: пустой массив.
- $append (true|false) — Если
true, существующие категории не удаляются, а добавляются. Еслиfalse, новые категории заменяют старые.- По умолчанию:
false.
- По умолчанию:
Примеры использования
Пример 1: Перемещение записи из одной категории в другую
Обратите внимание, что если не указывать третий параметр, он по умолчанию равен false, что означает, что категории будут заменены, а не добавлены.
wp_set_post_categories( $post_id, [ 123 ] );
Изменения
- С версии 2.1.0 — Функция была введена в WordPress.
Код функции
Вот как выглядит сама функция:
function wp_set_post_categories( $post_id = 0, $post_categories = array(), $append = false ) {
$post_id = (int) $post_id;
$post_type = get_post_type( $post_id );
$post_status = get_post_status( $post_id );
// Если $post_categories не массив, преобразуем его.
$post_categories = (array) $post_categories;
if ( empty( $post_categories ) ) {
$default_category_post_types = apply_filters( 'default_category_post_types', array() );
// Для обычных постов требуется категория по умолчанию.
$default_category_post_types = array_merge( $default_category_post_types, array( 'post' ) );
if ( in_array( $post_type, $default_category_post_types, true )
&& is_object_in_taxonomy( $post_type, 'category' )
&& 'auto-draft' !== $post_status
) {
$post_categories = array( get_option( 'default_category' ) );
$append = false;
} else {
$post_categories = array();
}
} elseif ( 1 === count( $post_categories ) && '' === reset( $post_categories ) ) {
return true;
}
return wp_set_post_terms( $post_id, $post_categories, 'category', $append );
}
Связанные функции
Некоторые полезные функции, которые могут вам помочь:
get_object_taxonomies()— Получает таксономии для объекта.get_the_category()— Возвращает категории записи.has_category()— Проверяет, есть ли у записи заданная категория.wp_delete_object_term_relationships()— Удаляет связь объекта с терминами.
Эти функции могут помочь вам работать с категориями и другими таксономиями в WordPress, упрощая управление контентом.