Удаляем (исключаем) все записи из таксономии

Предположим что у нас есть рубрика (или термин таксономии) к которой прикреплено несколько записей. И мы хотим открепить эти записи от данной рубрики. То есть полностью очистить рубрику от всех записей.

Пример для термина таксономии

Скопировано
$products = get_posts([
	'post_type' => 'product',
	'posts_per_page' => -1,
	'fields' => 'ids',
	'tax_query' => [
		[
			'taxonomy' => 'product_cat',
			'field'    => 'id',
			'terms'    => '555'
		]
	]
]);
if( $products ) {
	foreach( $products as $post_id ) {
		$terms = wp_get_object_terms( $post_id, 'product_cat', [ 'fields' => 'ids' ] );
		$terms = array_diff( $terms, [555] );
		wp_set_post_terms( $post_id, $terms, 'product_cat' );
	}
}
Показать код

В этом примере мы предполагаем, что на сайте есть тип записей product, таксономия product_cat и термин этой таксономии с id=555, который мы и хотим очистить от записей.

Пример для стандартной рубрики

Скопировано
$items = get_posts([
	'posts_per_page' => -1,
	'fields' => 'ids',
	'cat' => 555
]);
if( $items ) {
	foreach( $items as $post_id ) {
		$terms = wp_get_object_terms( $post_id, 'category', [ 'fields' => 'ids' ] );
		$terms = array_diff( $terms, [555] );
		wp_set_post_categories( $post_id, $terms );
	}
}
Показать код

Здесь мы очищаем от записей рубрику с id=555.