Удаляем (исключаем) все записи из таксономии
Предположим что у нас есть рубрика (или термин таксономии) к которой прикреплено несколько записей. И мы хотим открепить эти записи от данной рубрики. То есть полностью очистить рубрику от всех записей.
Пример для термина таксономии
Скопировано
$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
.