Wie füge ich Inhalte von einem anderen benutzerdefinierten Beitragstyp in Post ein?
-
16-10-2019 - |
Frage
Sagen Sie, ich habe einen benutzerdefinierten Post -Typ namens "Darsteller". Dies wird mit verschiedenen Bändern/Darstellern bevölkert. Diese Beiträge verfügen über ein ausgestelltes Bild sowie benutzerdefinierte Felder (MP3 -Datei, Facebook -Link, MySpace -Link usw.).
Ich habe einen weiteren benutzerdefinierten Post -Typ namens "Events".
Wenn ich einen neuen Ereignisbeitrag erstelle, möchte ich, dass die Option ein Dropbox zum Auswahl eines der Bands aus dem benutzerdefinierten Post -Typ "Künstler" ausgewählt hat.
Dadurch werden alle Daten aus dem spezifischen Band/Performer in den Ereignisbeitrag (benutzerdefinierte Felder, Bildbild usw.) eingefügt.
Was ist die beste Methode, um diese Art von Schleife aus dem Administrator "Ereignis" einzuführen/zu injizieren?
Lösung
Derzeit ist der beste Weg, den ich kenne, um das zu handhaben, das ist das Posts 2 Posts Plugin:
Hier ist ein Beispiel, das zeigt, wie die benutzerdefinierten Post -Typen eingerichtet werden können (Wenn Sie sie bereits haben, ist es mehr zum Nutzen anderer, wer dies möglicherweise liest.) sowie der Funktionsaufruf zu p2p_register_connection_type()
benötigt vom Plugin, um die Post -Beziehungen aufzubauen. Dies kann in Ihrem Thema gehen functions.php
Datei oder in a .PHP
Datei für ein Plugin, das Sie möglicherweise schreiben:
add_action('init','event_performer_init');
function event_performer_init() {
register_post_type('event',
array(
'label' => 'Events',
'public' => true,
'show_ui' => true,
'query_var' => 'event',
'rewrite' => array('slug' => 'events'),
'hierarchical' => true,
//'supports' => array('title','editor','custom-fields'),
)
);
register_post_type('performer',
array(
'label' => 'Performers',
'public' => true,
'show_ui' => true,
'query_var' => 'performer',
'rewrite' => array('slug' => 'performers'),
'hierarchical' => true,
//'supports' => array('title','editor','custom-fields'),
)
);
if ( function_exists('p2p_register_connection_type') )
p2p_register_connection_type( 'event', 'performer' );
global $wp_rewrite;
$wp_rewrite->flush_rules(false); // This only needs be done first time
}
Dann in der Vorlagendatei Ihres Themas single-event.php
Sie können Code wie folgt hinzufügen, um Informationen zu jedem Band anzuzeigen (Ich habe die Grundlagen hier gezeigt. Ich werde Ihnen alle Details ausfüllen und/oder hier auf der WordPress -Antworten -Site andere spezifischere Fragen stellen, z. ))
<?php
if (count($performers = p2p_get_connected($post->ID))) {
foreach($performers as $performer_id) {
$performer = get_post($performer_id);
echo 'The Band: ' . apply_filters('the_title',$performer->post_title);
echo 'Facebook Link: ' . get_post_meta($post->ID,'facebook_link',true);
}
}
?>