Collegamento di due tipi di post


8

e grazie in anticipo per il vostro aiuto.

Ho fatto qualche ricerca e a questa domanda è stato risposto un paio di volte con riferimento al plug-in "post 2 post", ma la documentazione su questo è molto "incentrata sul programmatore" - Sono in grado di ottenere facilmente il mio mani sporche, ma ho bisogno di una documentazione passo-passo migliore di quella disponibile lì. :)

Ecco di cosa ho bisogno. Sto usando gPress per generare "Luoghi" usando il loro tipo di post personalizzato. Funziona incredibilmente bene. Quello che devo fare è poter aggiungere "Eventi" a un Luogo. Posso utilizzare un tipo di post personalizzato per acquisire tutti i dettagli dell'evento, ma poi vorrei poter collegare gli eventi a un luogo specifico e viceversa. Se qualcuno stesse visualizzando il post dell'evento, ci sarebbe un modo abbastanza semplice per estrarre anche le informazioni sul luogo relative all'evento.

Tutti i suggerimenti sono apprezzati!

Risposte:


9

I post per post di Scribu sono un plug -in fantastico e semplice, sono sicuro che possiamo aiutarti a farlo funzionare. L' uso di base è piuttosto semplice.

supponendo che i tuoi tipi di post personalizzati siano nominati 'place'e 'event', il seguente codice andrebbe nel file Functions.php del tuo 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 );

questo renderà le meta-box per assegnare relazioni disponibili nelle schermate personalizzate di modifica post.

per le singole pagine di luoghi ed eventi, puoi creare modelli personalizzati nel tema seguendo la gerarchia dei modelli di WordPress single-{post_type}.php, quindi nel tuo caso single-event.phpe single-place.php. puoi duplicarli dal modello single.php.

per elencare le connessioni, abbiamo solo bisogno di un po 'di codice all'interno di questi template ovunque vogliamo produrre la lista. questo andrebbe nel modello del luogo e genererebbe eventi connessi:

<?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, brillante - questo è quello che mi serviva, e per qualche motivo non è stato trovare nulla enunciato abbastanza in questo modo, quindi apprezzo il tempo che hai preso per agganciare questo in su. Saluti!
Giovanni,

1
A partire dalla versione 1.4 di Post2Post, dovresti usare 'p2p_init' invece di 'init' per registrare i tipi di connessione.
Stephan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.