Функция wp_set_post_terms()
в WordPress используется для установки терминов (таких как категории или метки) для заданного поста. Она позволяет гибко управлять таксономиями, к которым относится запись, и обеспечивает простоту работы с терминами.
wp_set_post_terms( int $post_id, string|array $terms = '', string $taxonomy = 'post_tag', bool $append = false ): array|false|WP_Error
Параметры
$post_id
(int) — ID поста, к которому будут добавлены термины. Не имеет значения по умолчанию.$terms
(string|array) — Массив терминов или строка терминов, разделённых запятыми, которые нужно установить для поста. Для иерархических таксономий необходимо передавать ID терминов.$taxonomy
(string) — Название таксономии, по умолчанию —'post_tag'
. Это может быть как встроенная таксономия (категории, метки), так и пользовательская.$append
(bool) — Еслиtrue
, термины будут добавлены к существующим; еслиfalse
, существующие термины будут заменены новыми. По умолчанию —false
.
Возвращаемое значение
array
— Массив ID терминов, которые были добавлены.false
— Если передан неверныйpost_id
(например, 0).WP_Error
— При возникновении ошибки.
Пример 1: Установка категорий и меток по умолчанию
Этот пример показывает, как установить категории и метки по умолчанию при создании или обновлении поста. Код добавляется в файл functions.php
вашей темы.
add_action( 'wp_insert_post', 'update_post_terms' );
function update_post_terms( $post_id ) {
if ( $parent = wp_is_post_revision( $post_id ) )
$post_id = $parent;
$post = get_post( $post_id );
if ( $post->post_type != 'post' )
return;
// Добавим метку по умолчанию
wp_set_post_terms( $post_id, 'название метки', 'post_tag', true );
// Добавим категорию по умолчанию
$categories = wp_get_post_categories( $post_id );
$newcat = get_term_by( 'name', 'название рубрики', 'category' );
array_push( $categories, $newcat->term_id );
wp_set_post_categories( $post_id, $categories );
}
Результат: При сохранении поста он будет автоматически получать заданные метки и категории, если они ещё не установлены.
Пример 2: Установка терминов по ID
Если вам нужно установить термины для поста, используя их ID, вы можете сделать это следующим образом:
$post_id = 123; // ID вашего поста
$terms = array( 1, 2, 3 ); // Массив ID терминов, которые нужно установить
$result = wp_set_post_terms( $post_id, $terms, 'category', false );
if ( is_wp_error( $result ) ) {
echo 'Ошибка: ' . $result->get_error_message();
} else {
echo 'Термины успешно установлены!';
}
Примечание: В этом примере предполагается, что ID терминов 1, 2 и 3 существуют в таксономии 'category'
.
Пример 3: Добавление меток к существующим
В этом примере мы добавим новую метку к уже существующим меткам поста, используя параметр $append
:
$post_id = 123; // ID вашего поста
$new_tags = 'новая метка, ещё одна метка'; // Новые метки
$result = wp_set_post_terms( $post_id, $new_tags, 'post_tag', true );
if ( is_wp_error( $result ) ) {
echo 'Ошибка: ' . $result->get_error_message();
} else {
echo 'Новые метки успешно добавлены!';
}
Результат: Новые метки будут добавлены к уже существующим меткам поста с ID 123.
Пример 4: Установка термина по имени (не рекомендуется для иерархических таксономий)
Хотя лучше использовать ID для иерархических таксономий, вот как можно добавить термин по имени для неиерархической таксономии, такой как метки:
$post_id = 123; // ID вашего поста
$tags = 'новая метка'; // Новая метка
$result = wp_set_post_terms( $post_id, $tags, 'post_tag', false );
if ( is_wp_error( $result ) ) {
echo 'Ошибка: ' . $result->get_error_message();
} else {
echo 'Метка успешно установлена!';
}
Результат: Новая метка будет добавлена к посту с ID 123.
Обработка ошибок
Функция wp_set_post_terms()
возвращает WP_Error
в случае, если что-то пошло не так. Рекомендуется всегда проверять, не вернулась ли ошибка, чтобы избежать потенциальных проблем:
if ( is_wp_error( $result ) ) {
echo 'Ошибка: ' . $result->get_error_message();
}
Заключение
Функция wp_set_post_terms()
является мощным инструментом для работы с терминами в WordPress. Она позволяет легко управлять таксономиями и эффективно добавлять или заменять термины для постов. Используя приведенные выше примеры, вы можете гибко настраивать работу с терминами в своих проектах WordPress.