Verknüpfen von zwei Beitragstypen

8

und vielen Dank im Voraus für Ihre Hilfe.

Ich habe einige Suchanfragen durchgeführt, und diese Frage wurde einige Male mit Bezug auf das Plugin "posts 2 posts" beantwortet, aber die Dokumentation dazu ist sehr "codiererzentriert" - ich bin in der Lage und bequem, meine zu bekommen Hände schmutzig, aber ich benötige eine bessere Schritt-für-Schritt-Dokumentation als die dort verfügbaren. :) :)

Folgendes brauche ich. Ich verwende gPress , um "Orte" mit ihrem benutzerdefinierten Beitragstyp zu generieren. Das funktioniert erstaunlich gut. Was ich tun muss, ist in der Lage zu sein, einem Ort "Ereignisse" hinzuzufügen. Ich kann einen benutzerdefinierten Beitragstyp verwenden, um alle Ereignisdetails zu erfassen, möchte dann aber Ereignisse an einen bestimmten Ort anhängen können und umgekehrt. Wenn jemand den Ereignisbeitrag ansieht, gibt es eine ziemlich einfache Möglichkeit, auch die Ortsinformationen zum Ereignis abzurufen.

Anregungen sind willkommen!

John
quelle

Antworten:

9

Scribus Posts-to-Posts sind ein großartiges und einfaches Plugin. Ich bin sicher, wir können Ihnen dabei helfen, es zum Laufen zu bringen. Die grundlegende Verwendung ist ziemlich einfach.

Unter der Annahme, dass Ihre benutzerdefinierten Beitragstypen benannt sind 'place'und 'event'der folgende Code in die Datei functions.php Ihres Themas aufgenommen wird:

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

Dadurch werden die Meta-Felder zum Zuweisen von Beziehungen in Ihren benutzerdefinierten Post-Bearbeitungsbildschirmen verfügbar.

Für Ihre einzelnen Orts- und Ereignisseiten können Sie benutzerdefinierte Vorlagen in Ihrem Thema erstellen, die der WordPress- Vorlagenhierarchie folgen single-{post_type}.php, also in Ihrem Fall single-event.phpund single-place.php. Sie können diese aus der Vorlage single.php duplizieren.

Um Verbindungen aufzulisten, benötigen wir nur ein bisschen Code in diesen Vorlagen, wo immer wir die Liste ausgeben möchten. Dies würde in die Ortsvorlage gehen und verbundene Ereignisse ausgeben:

<?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
quelle
Milo, brillant - das ist , was ich brauchte, und aus irgendeinem Grund war ich nichts buchstabiert finden ganz auf diese Weise, so dass ich die Zeit , die Sie nahm schätzen diese zu anschließen. Prost!
John
1
Ab Version 1.4 von Post2Post sollten Sie 'p2p_init' anstelle von 'init' verwenden, um Verbindungstypen zu registrieren.
Stephan