WordPress: массовое исключение записей из категории

Суть проблемы следующая. Есть рубрика, к которой привязано порядка 500 записей. Необходимо убрать привязку записей к рубрике. Не удалить рубрику или записи, а именно разорвать связь между ними. Можно, конечно, делать эту вручную через редактирование каждой записи, но куда проще и быстрее воспользоваться методом wp_remove_object_terms().

<?
include($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
$cat_id = 116;
$args = array(
'numberposts' => -1,
'post_status' => 'any',
'post_type' => 'films',
'category' => $cat_id,
);
$posts = get_posts($args);
foreach ($posts as $post)
{
//очищаем категорию
wp_remove_object_terms( $post->ID, $cat_id, 'category' );
}
?>

Создаем файл с любым именем. Вставляем в него данный код, загружаем в папку сайта, обращаемся к файл через браузер.

Не забудьте указать в переменной $cat_id идентификатор вашей рубрики. А в 7-й строке тип записей. Если выполнить операцию нужно со всеми типами записей — просто уберите эту строку. Как не трудно догадаться, сначала мы получаем все записи, относящиеся к определённой рубрике, а далее уже выполняем удаление привязки.

По аналогии можно выполнить обратную процедуру. То есть массово включить записи в категорию. Делается это с помощью метода wp_set_object_terms().

<?
include($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
$cat_id = 116;
$args = array(
'numberposts' => -1,
'post_status' => 'draft',
'post_type' => 'films',
);
$posts = get_posts($args);
foreach ($posts as $post)
{
//выполняем привязку записей к рубрике
wp_set_object_terms( $post->ID, $cat_id, 'category' );
}
?>

В данном примере мы получаем все записи, находящиеся в статусе «Черновик» и выполняем привязку этих записей к категории.

Работают данные методы не только с категориями, но и с метками (тегами). При вызове метода достаточно указать post_tag, либо название вашей собственной таксономии.

Опубликовано: 8 ноября 2020 года, в рубрике «Wordpress».

Оставить комментарий

5000
  Подписаться  
Уведомление о
Поблагодарить автора статьи
Зачем это нужно