Aprende en este tutorial cómo relacionar dos Custom Post Types (CPTs) en WordPress mediante código, sin plugins.
¿Te interesa crear dos CPTs distintos pero que estén relacionados de alguna manera?
Con un ejemplo se entiende mejor:
Imagina que quieres estructurar cursos y lecciones. En ese caso tienes dos opciones:
- Crear un CPT jerárquico, de forma que los cursos sean los «padres» y las lecciones los «hijos». Esta es la opción más sencilla. Si te interesa puedes echar un vistazo a este tutorial.
- Generar dos CPT, uno para «cursos» y otro para «lecciones» para luego relacionarlos entre ellos de forma jerárquica. Esto resulta algo más complejo pero si tienes gran cantidad de cursos y lecciones te permite estructurarlos mejor. De hecho, es como lo hacen algunos LMS como Sensei.
En este tutorial vas a ver la segunda solución: cómo crear dos CPTs relacionados entre sí, uno para cursos y otro para sus lecciones.
Este sería el resultado final:
¿Te interesa? Sigue leyendo. 😉
Pasos para relacionar de forma jerárquica dos CPTs en WordPress
1. Crea los Custom Post Types
Siguiente el mismo ejemplo, en primer lugar genera el CPT de cursos siguiendo el tutorial para hacerlo mediante código.
Asegúrate de que en el array de argumentos del CPT curso tienes esta línea:
'hierarchical' => true,
Además, comprueba que el array de ‘supports’ incluye el argumento ‘page-atributes’, por ejemplo:
'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'custom-fields', 'page-attributes' , 'genesis-cpt-archives-settings', 'genesis-seo', 'genesis-scripts', 'genesis-layouts', 'genesis-rel-author', ),
Ambas opciones son imprescindibles para poder agregar las lecciones como «hijas» del curso.
Ahora le toca el turno al CPT de lecciones. Recuerda que no debe de ser jerárquico, así que en el array de argumentos debes tener esta la línea:
'hierarchical' => false,
Una vez que hayas creado ambos CPTs, puedes activarlos desde el apartado de plugins como con cualquier otro.
2. Genera el metabox para relacionarlos
A continuación, necesitas generar la forma de relacionar el CPT «hijo» (las lecciones) con el CPT «padre» (los cursos).
¿Cómo?
A través de una metabox de WordPress.
Para ello, añade este snippet al final del fichero functions.php o a tu plugin de funcionalidades:
Para ver este código y los otros 2063 snippets de esta web,
identifícate o suscríbete aquí.
Con este código consigues que, cuando añadas una nueva lección, te aparezca una metabox en la parte superior derecha, donde podrás elegir el curso «padre».
Si has registrado tus CPTs con otro nombre (en lugar de ‘course‘ y ‘lesson‘) recuerda sustituirlos en el bloque anterior.
Ya casi lo tienes.
3. Asigna las lecciones al curso «padre»
Por último, crea las lecciones y selecciona su curso padre correspondiente en la nueva metabox llamada «Curso».
La visión general sería algo así:
¿Ves qué fácil resulta elegir ahora a qué curso corresponde cada lección?
Conclusiones
Si quieres mantener dos CPT separados pero relacionados de forma jerárquica, ahora ya sabes cómo hacerlo mediante código.
Esto es ideal para cursos y lecciones, como en el ejemplo presentado, pero puedes adaptarlo a tus necesidades.
¿Tienes alguna pregunta o quieres darme una sugerencia para próximos tutoriales? Déjala en los comentarios (esta opción es exclusiva para suscriptores).