web-dev-qa-db-fra.com

Comment insérer du contenu d'un autre type de message personnalisé dans un message?

Supposons que j'ai un type de message personnalisé appelé "Performers". Ceci est peuplé avec différents groupes/interprètes. Ces publications ont une image sélectionnée ainsi que des champs personnalisés (fichier mp3, lien facebook, lien myspace, etc.).

J'ai un autre type de message personnalisé appelé "Événements".

Lorsque je crée une nouvelle publication d'événement, j'aimerais pouvoir utiliser une liste déroulante pour sélectionner l'un des groupes dans le type de publication personnalisée "Performers".

Cela insérera toutes les données du groupe/exécutant spécifique dans la publication de l'événement (champs personnalisés, image sélectionnée, etc.).

Quelle est la meilleure méthode pour insérer/injecter ce type de boucle à partir de l’administrateur "Event"?

1
Joe

Actuellement, le meilleur moyen que je connaisse est le plugin (2) Posts :

Voici un exemple montrant comment configurer les types de messages personnalisés (si vous les avez déjà, ce sera plus avantageux pour les autres lecteurs qui pourraient le lire) , ainsi que l'appel de fonction à p2p_register_connection_type() demandé par le plugin pour mettre en place les relations de post. Cela peut aller dans le fichier functions.php de votre thème ou dans un fichier .PHP pour un plugin que vous écrivez peut-être:

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
}

Ensuite, dans le fichier de modèle de votre thème single-event.php, vous pouvez ajouter le code suivant pour afficher des informations sur chaque groupe (j’ai montré les bases ici; je vous laisse compléter tous les détails et/ou demander à d’autres des questions plus spécifiques ici sur le site WordPress Answers, par exemple si vous devez savoir comment obtenir l'image en vedette, etc.)

<?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);
    }
  }
?>
3
MikeSchinkel