Суть проблемы следующая. Есть рубрика, к которой привязано порядка 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
, либо название вашей собственной таксономии.
Оставить комментарий