Функция wp_set_post_terms()
позволяет задавать термины для поста в определенной таксономии. Чтобы открепить пост от всех терминов конкретной таксономии, можно воспользоваться этой же функцией, передав пустой массив как список терминов.
Пример:
wp_set_post_terms( $post_id, [], 'taxonomy_name' );
Здесь:
$post_id
— ID поста, который нужно открепить от таксономии.taxonomy_name
— имя таксономии, от которой вы хотите открепить пост.
Подробное объяснение
Когда вы передаёте пустой массив в wp_set_post_terms()
, WordPress удаляет все связи между постом и указанной таксономией. Это работает для любых зарегистрированных таксономий (как пользовательских, так и стандартных, например, category
или post_tag
).
Пример функции для удаления терминов:
Если требуется универсальная функция для удаления всех терминов из заданной таксономии у конкретного поста:
function remove_post_terms( $post_id, $taxonomy ) {
if ( taxonomy_exists( $taxonomy ) ) {
wp_set_post_terms( $post_id, [], $taxonomy );
} else {
return new WP_Error( 'invalid_taxonomy', 'Указанная таксономия не существует.' );
}
}
Использование:
remove_post_terms( 123, 'category' ); // Удалит все категории из поста с ID 123
remove_post_terms( 456, 'custom_taxonomy' ); // Удалит все термины из пользовательской таксономии custom_taxonomy
Дополнительно
- Убедитесь, что указанная таксономия зарегистрирована и связана с этим типом записи.
- Если нужно удалить только определённые термины, можно передать массив ID терминов, которые не должны оставаться у поста.