Как перенести посты в произвольный тип записи?

Вопрос:

Добрый день!
В категории «Х» есть записи. Я создал произвольный тип записи для них..
Вопрос: Как массово перенести записи с категории «Х» в произвольный тип записей?

Решение:

Логика:

  1. Получаем список постов в указанной категории
  2. циклом изменяем тип этих постов

Код:

<?php
	$my_posts = new WP_Query;
	$myposts = $my_posts->query( array( //Получаем записи
		'post_type' => 'post', // Указываем исходный тип записи
		'cat' => 4 // Указываем id категории из которой будем брать записи для преобразования.
	) );
	foreach( $myposts as $pst ){ //Цикл для изменения типа постов
		set_post_type( $pst->ID, 'page'  ); // Указываем нужный тип поста вместо "page"
	}
?>

FAQ

Вопрос: где эту функцию нужно писать? оформить функцией в functions.php и откуда-то вызвать? или просто выполнить ее в одном из шаблонов?

Ответ: я бы посоветовал вышеуказанную функцию вставить  в отдельный файл и запускать когда, когда это надо.

Файл поместить в корень сайта, в файл записать

<?php
	// подгружаем среду WP  
	require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
// дальше любой код
?>

 

4 thoughts on “Как перенести посты в произвольный тип записи?

    • В данной ситуации $pst это просто переменная, она может быть любой. В коде была синтаксическая ошибка, я её исправил и проверил код на работоспособность.
      Теперь точно всё работает

  1. спасибо, оно работает. но в моем случае не хватает сразу нескольких вещей. я пытался таким образом перенести записи в товары woocommerce. сами товары появляются, но они почему-то скрытые и без категорий-тегов. последнее, может быть, можно как-то поправить забирая имя тега и категории в переменные (если, конечно, WC не держит их как-то отдельно, как это у него сделано с атрибутами товара) и затем, помимо типа поста, присваивать еще и их. а вот видимость записи, наверное реализована у WC как-то по-своему. очень жаль. хотелось изящно решить вопрос с переводом каталога в магазин.

    • То, что описали вы намного сложнее изначально поставленной задачи. Постараюсь через недельку заняться решением вашей задачи
      UPD
      Я нашел несколько плагинов, которые решают вашу задачу:

Добавить комментарий для shn Отменить ответ