Пакетное перемещение записей между таксономиями в WordPress: категория на метку

# ПАКЕТНОЕ ПЕРЕМЕЩЕНИЕ ЗАПИСЕЙ (ПУБЛИКАЦИЙ) ОТ ОДНОЙ ТАКСОНОМИИ К ДРУГОЙ (С КАТЕГОРИИ НА МЕТКУ)

Сегодня ко мне обратился друг с вопросом, как объединить статьи из двух категорий в одну. Поняв, что вопрос глубокий, я в шутку ответил: переместите каждую статью в другую категорию.

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

## Функция для перемещения записей

Вот пример функции, которая выполняет эту задачу:


function kama_change_cat( $change_from, $change_to ){
    global $wpdb;

    $sql = "
    SELECT p.ID, p.post_title FROM $wpdb->posts p
        JOIN $wpdb->term_relationships rel ON ( p.ID = rel.object_id )
        WHERE rel.term_taxonomy_id = '$change_from'
    ";

    $posts = $wpdb->get_results( $sql );
    if( ! $posts ){
        return print 'ERROR: Пустой результат запроса.';
    }

    echo '
    '; foreach( $posts as $res ){ $wpdb->query( " UPDATE $wpdb->term_relationships SET term_taxonomy_id = '$change_to' WHERE object_id = '$res->ID' " ); echo "
  1. Обновлена запись с ID: $res->ID ($res->post_title)
  2. "; } echo '
'; } Разместите этот код в файле вашей темы, а затем вызовите функцию так: Где вместо 1 и 8 нужно указать ID категорий: откуда (1) и куда (8) переместить записи. Не забудьте сделать резервную копию базы данных! Никогда не знаешь, что может случиться... ## ДЛЯ ТЕХ, КТО СЛИШКОМ СЛОЖНЫЙ 1. Откройте файл footer.php, вставьте функцию и её вызов в самом низу. Сохраните файл footer.php. Зайдите на сайт и обновите любую страницу. После обновления в самом низу (в подвале) вы увидите, какие записи были перемещены. 2. Снова откройте footer.php и удалите все, что недавно добавляли (функцию и её вызов). 3. Наслаждайтесь :) ![Улыбка](https://wp-kama.com/assets/plugins/kama-wp-smile-packs/qip_all_dark/smile.gif) ## АЛЬТЕРНАТИВНЫЙ ВАРИАНТ Чтобы изменить тип записи, например, сделать посты постоянными страницами или записями особого типа, вы можете использовать специальную функцию set_post_type(). Чтобы переместить записи из одной таксономии в другую, можно использовать функцию wp_set_post_terms( $post_ID, $tags, $taxonomy, $append ). При этом мы указываем: - ID записи ($post_ID); - названия элементов таксономии, в которые мы их перемещаем ($tags); - название таксономии, в которую мы их перемещаем ($taxonomy); - способ перемещения: true означает оставить в текущих элементах таксономии и добавить к указанным, false означает удалить из текущих и добавить в указанные ($append). Например, давайте переместим записи с ID 5 и 10, которые находятся в таксономии "tax1", в таксономию "tax2" (в указанные элементы этой таксономии с ID 45 и 5): $posts = array(5,10); foreach( $posts as $post_id ){ if( wp_set_post_terms( $post_id, array(45, 5), "tax2", false ) ){ echo "Перемещено"; } } ## ПЛАГИН В комментариях предлагали использовать плагин Bulk Move для перемещения статей из одной категории в другую или для массового удаления.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *