web-dev-qa-db-fra.com

Lier deux types de publication

et merci d'avance pour votre aide.

J'ai fait quelques recherches, et cette question a reçu une réponse à plusieurs reprises en référence au plug-in "posts 2 posts", mais la documentation à ce sujet est très "centrée sur le codeur" - je suis capable de les mains sales, mais j’ai besoin d’une meilleure documentation étape par étape que celle disponible. :)

Voici ce dont j'ai besoin. J'utilise gPress pour générer des "Lieux" en utilisant leur type de message 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 des événements, mais j'aimerais ensuite pouvoir attacher des événements à un lieu spécifique, et inversement. Si quelqu'un visualisait le post de l'événement, il y aurait un moyen assez facile d'extraire également les informations de lieu liées à l'événement.

Toutes les suggestions sont appréciées!

8
John

Scribuposts-to-posts est un plugin simple et génial, je suis sûr que nous pouvons vous aider à le faire fonctionner. Le usage de base est assez simple.

en supposant que vos types de publication personnalisés soient nommés 'place' et 'event', le code suivant serait placé 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éta-boîtes pour attribuer des relations disponibles dans vos écrans de post-édition personnalisés.

pour vos pages relatives à un lieu et à un événement, vous pouvez créer des modèles personnalisés dans votre thème en suivant la hiérarchie WordPress templatesingle-{post_type}.php, donc dans votre cas single-event.php et 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 partout où nous voulons sortir la liste. ceci 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();
?>
9
Milo