En ocasiones necesitamos pasar un contenido de un custom post type a otro. Una página a post, un producto a página, etc. Veamos cómo hacerlo bien.
¿Para qué cambiar los CPT?
Antes que nada, debemos contestar a la pregunta del millón de dólares. ¿Por qué quisiera yo cambiar mis CPTs?
Bien, pues hay varias razones, pero la primera y más usual es porque estábamos utilizando un theme o plugin que nos creaba unos Custom Post Types (productos, servicios, descargas, porfolio, tiendas, personas, películas, etc.) que ya no lo queremos seguir usando.
Eso es especialmente problemático si tenemos un theme que crea sus propios CPT (cosa que está muy mal echa, pues NUNCA debería ser así), ya que cuando cambiamos de theme desaparece todo :(
Total, que en ocasiones querremos convertir todo ese contenido de un CPT a otro, que vamos a crear nosotros, otro plugin o incluso usar alguno de los que tiene WordPress pore defecto (posts y páginas).
Si queréis un consejo, el tema de los CPT lo mejor es crearlos vosotros mismos por código. Es muy fácil y simple y cuento cómo hacerlo en el Curso de Plugins para WordPress, en la clase #4. Custom Post Types, y en la #10. Hacer plugins sin escribir código.
Y ahora vamos al tema. Cómo cambiar esos Custom Post Types de un CPT a otro, antes de eliminar ese plugin o theme.
Cambiar de Custom Post Type en WordPress
La primera forma es hacerlo manualmente, o sea, uno a uno. Lo conseguimos de forma fácil con el plugin Post Type Switcher, un plugin 100% recomendado y de solvencia contrastada que nos añade un pequeño pero potente y útil desplegable en el editor de contenido, que nos permite cambiar de un CPT a otro. Por ejemplo de página a entrada o viceversa.

Podemos cambiar el tipo de post desde el propio editor
Además también podemos hacer el cambio en el listado de posts, en el panel de vista rápida, donde aparte de modificar otras cosas, ahora también podremos seleccionar el tipo de CPT.

También podemos hacer el cambio en la vista rápida
Así pues, esta sería una solución interesante si lo que queremos es decidir lo que hacer con nuestro contenido de forma más manual y artesanal, y si lo queremos redistribuir entre otros CPTs.
Pero en ocasiones deberemos hacer algo más rápido y directo, como en el caso que tengamos cientos o miles de un CPT que queramos pasar a otro. Bien, ningún problema, veamos cómo.
Cambiar de Custom Post Type en bloque en WordPress
Si lo que queremos hacer es reemplazar completamente un CPT por otro, sin una selección manual, nuestro plugin es Convert Post Types. Este nos va a permitir elegir el CPT de origen y el de destino. Pero ojo, como dice en su pantalla de configuración, con un gran poder va una gran responsabilidad. Ojo lo que tocáis.

Podemos convertir en bloque los CPTs, e incluso filtrar cuáles
En este caso, tenemos 4 desplegables:
- Convert from: Le indicaremos el CPT del que nos queremos deshacer
- Convert to: Le diremos el CPT que queremos que sea
- Limit posts to category: En el caso que sólo queramos migrar a una categoría en concreto. Por ejemplo si migramos el CPT "Eventos" a la categoría "Eventos" de entradas.
- Limit pages to children of: Si queremos que todos los CPT que transformamos a páginas, sean hijas de una página en concreto. Por ejemplo si migramos el CPT "Equipo" a páginas, todas ellas subpáginas de la página "Equipo".
Y listos. Con esto ya lo tenemos todo a punto. Le damos al botón mágico y todos los CPT serán mágicamente convertidos a otro. Pero mucho, mucho ojo... porque algunos CPT tienen los denominados Custom Fields. ¿Por qué lo tenemos que tener en cuenta?
Nota importante sobre los Custom Fields
Los CPT y su migración e intercambio es la parte fácil de todo esto. Lo realmente complejo es cuando esos CPT tienen Custom Fields, o sea, Campos Personalizados.
Hay algunos campos que son estándar. El título, el contenido, el resumen, etc. Pero en algunos casos hay campos específicos para ciertos CPTs, como por ejemplo en el caso de los productos, que tienen el campo "precio".
Claro, un precio no es un campo estándar. Con lo que si migramos un CPT llamado "productos" a "páginas" y lo miramos con el editor, veremos que los campos estándar se migran bien (o sea que veremos el título, contenido y demás), pero no veremos los campos personalizados, como por ejemplo el precio, ya que las "páginas" no tienen "precio".
Ojo, que no se pierde nada. Ese precio seguirá estando en la base de datos. Pero a diferencia del CPT "producto" que tenía su propio precio colocado en una caja aparte, en esta ocasión lo encontraremos en la caja de "Campos personalizados" que viene en WordPress.
Con lo que en lugar de ver algo así:

Caja (metabox) de campos personalizados
Lo veremos todo en los campos personalizados típicos de WordPress, mucho menos atractivos:

Así es como WordPress muestra los campos personalizados sin metaboxes especiales
Así pues, tenemos la información igualmente, pero deberemos tener en cuenta que está en esos campos especiales. Pero vamos, el tema de los Custom Fields ya es un mundo aparte que trataremos en otros tutoriales e incluso algunos cursos específicos para ello :)
Y ya lo sabéis. Si queréis saber más sobre WordPress, os invito a echar un vistazo a los videotutoriales, con más de 6753 vídeos contando como hacer todo esto... ¡Y más!