Lier deux types de publication

8

et merci d'avance pour votre aide.

J'ai fait quelques recherches, et cette question a été répondue plusieurs fois en référence au plugin "posts 2 posts", mais la documentation à ce sujet est très "centrée sur le codeur" - je suis capable et confortable d'obtenir mon les mains sales, mais j'ai besoin d'une meilleure documentation étape par étape que celle qui y est disponible. :)

Voici ce dont j'ai besoin. J'utilise gPress pour générer des "Lieux" en utilisant leur type de publication personnalisé. Cela fonctionne incroyablement bien. Ce que je dois faire, c'est pouvoir ajouter des "événements" à un lieu. Je peux utiliser un type de publication personnalisé pour capturer tous les détails de l'événement, mais j'aimerais pouvoir attacher des événements à un lieu spécifique, et vice-versa. Si quelqu'un consultait le message de l'événement, il y aurait un moyen assez simple de récupérer également les informations sur le lieu liées à l'événement.

Toutes les suggestions sont appréciées!

John
la source

Réponses:

9

Les posts-to-posts de Scribu sont un plugin génial et simple, je suis sûr que nous pouvons vous aider à le faire fonctionner. L' utilisation de base est assez simple.

en supposant que vos types de publication personnalisés sont nommés 'place'et 'event', le code suivant irait dans le fichier functions.php de votre thème:

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 );

cela rendra les métadonnées pour attribuer les relations disponibles dans vos écrans de modification de publication personnalisés.

pour votre lieu unique et vos pages d'événements, vous pouvez créer des modèles personnalisés dans votre thème en suivant la hiérarchie des modèles WordPress single-{post_type}.php, donc dans votre cas single-event.phpet single-place.php. vous pouvez les dupliquer à partir du modèle single.php.

pour lister les connexions, nous avons juste besoin d'un peu de code dans ces modèles là où nous voulons sortir la liste. cela irait dans le modèle de lieu et produirait les événements connectés:

<?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
la source
Milo, brillant - ce que je avais besoin, et pour une raison quelconque je n'étais pas trouver quoi que ce soit énoncé tout à fait de cette façon, je vous remercie du temps que vous avez pris pour accrocher cette place. À votre santé!
John
1
Depuis la version 1.4 de Post2Post, vous devez utiliser 'p2p_init' au lieu de 'init' pour enregistrer les types de connexion.
Stephan