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?

War es hilfreich?

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);
    }
  }
?>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top