Soporte » Plugins y Hacks » Relacionar dos Custom Post Type

  • natdev

    (@natdev)


    Hola.
    Uso el plugin CPT UI para crear custom post types y advanced custom fields para crear campos personalizados.
    Digamos que tengo dos CPT, uno llamado Eventos y otro llamado Cursos. Mi cuestión es, ¿cómo podría hacer para cuando creo un curso que este se me muestre en eventos también? Es decir, que al crear un curso también se cree un evento, quizás con algún campo personalizado en Cursos que diga algo así como «Añadir curso en Eventos» o si hay alguna otra forma de hacerlo.
    Gracias

Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
  • Hola,

    Se me ocurren dos cosas:

    Primero: ¿Y por qué no usas un único CPT y distingues si es evento o curso mediante un ACF y luego muestras campos específicos de Cursos o eventos en función del valor del ACF anterior?

    Segundo: Puedes programar una acción, de tal manera que cuando crees un post del tipo que sea, el sistema cree automáticamente otro post del otro tipo y te lo deje, por ejemplo, como borrador. Para relacionarlos entre si, puedes usar un ACF de tipo Objeto de post.

    El evento que te permite programar código cuando se publica un post es el siguiente:

    add_action('publish_post', 'tu_funcion_que_crea_el_otro_post');
     
    function tu_funcion_que_crea_el_otro_post($id, $post_obj)
    {
        //Aquí tienes que evaluar el tipo de post del $post_obj
        //Si es del tipo original que quieres que genere la creación
        //Del otro post, programas la creación del nuevo
    
    }

    Te dejo por aquí también la documentación para crear con código un post:
    https://developer.wordpress.org/reference/functions/wp_insert_post/

    Un saludo 😉

    • Esta respuesta fue modificada hace 3 meses, 4 semanas por damasovelazquez.
    Iniciador del debate natdev

    (@natdev)

    Hola!

    Muchas gracias por tu respuesta. Al final lo solucioné de esta manera:

    Lo que hice fue hacer un campo en Eventos para marcar si se trata de un curso y en ese caso agregué los campos necesarios para el curso.

    Luego, en el código, en donde saco el listado de cursos, hago dos consultas: el de cursos y el de eventos según si se marcó la opción del campo de si es un curso.

    Recorro el resultado de ambas consultas añadiendo en un array asociativo cada una y luego fusionándolas en un único array (hago esto porque necesito ordenar por fecha) y finalmente imprimo el resultado con los campos necesarios para el curso.

    De esta forma no creo un curso, sino que muestro en el listado un evento que se marcó como curso, pero que en este caso sirve perfectamente. Lo que si está claro es que necesito crear el evento para que me salga en el calendario, eso sí.

    Tu segunda opción me gustó para en el caso de que si necesite crear ambos posts. Aún soy nueva en esto de programar en WordPress. Me la guardo para la próxima 🙂

    Gracias y un saludo.

Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
  • Debes estar registrado para responder a este debate.