Vinculación de dos tipos de publicaciones

8

y gracias de antemano por su ayuda.

He realizado algunas búsquedas, y esta pregunta ha sido respondida un par de veces con referencia al complemento "posts 2 posts", pero la documentación al respecto es muy "centrada en el codificador". manos sucias, pero necesito una mejor documentación paso a paso que la que está disponible allí. :)

Esto es lo que necesito. Estoy usando gPress para generar "Lugares" utilizando su tipo de publicación personalizada. Esto está funcionando increíblemente bien. Lo que necesito hacer es poder agregar "Eventos" a un Lugar. Puedo usar un tipo de publicación personalizada para capturar todos los detalles del evento, pero luego me gustaría poder adjuntar eventos a un lugar específico, y viceversa. Si alguien estaba viendo la publicación del Evento, habría una manera algo fácil de extraer también la información del Lugar relacionada con el Evento.

Cualquier sugerencia es apreciada!

Juan
fuente

Respuestas:

9

Las publicaciones de publicaciones de Scribu son un complemento excelente y simple, estoy seguro de que podemos ayudarlo a que funcione. El uso básico es bastante sencillo.

suponiendo que su encargo tipos de envíos se nombran 'place'y 'event', el siguiente código entraría en el archivo functions.php de tu tema:

function my_connection_types() {
    p2p_register_connection_type( array(
        'name' => 'events_to_places', 
        'from' => 'event',
        'to' => 'place',
    ) );
}
add_action( 'p2p_init', 'my_connection_types', 100 );

esto hará que los meta cuadros para asignar relaciones estén disponibles en sus pantallas de edición de publicaciones personalizadas.

para sus páginas de eventos y lugares únicos, puede crear plantillas personalizadas en su tema siguiendo la jerarquía de plantillas de WordPress single-{post_type}.php, así en su caso single-event.phpy single-place.php. puedes duplicarlos desde la plantilla single.php.

para enumerar las conexiones, solo necesitamos un poco de código dentro de estas plantillas donde queramos generar la lista. esto iría en la plantilla de lugar y generaría eventos conectados:

<?php
$connected = new WP_Query( array(
    'connected_type' => 'events_to_places', 
    'connected_items' => get_queried_object()
) );

echo '<p>Related events:</p>';
echo '<ul>';
while( $connected->have_posts() ) : $connected->the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;
echo '</ul>';

wp_reset_postdata();
?>
Milo
fuente
Milo, brillante - esto es lo que necesitaba, y por alguna razón que no encontraba nada explicado bastante de esta manera, así que aprecio el tiempo que tomó para conectar esto. ¡Salud!
John
1
A partir de la versión 1.4 de Post2Post, debe usar 'p2p_init' en lugar de 'init' para registrar los tipos de conexión.
Stephan