Как вставить контент из другого пользовательского типа поста в пост?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/8078

Вопрос

Скажем, у меня есть пользовательский тип поста, называемый «исполнителями». Это заполняется различными группами/исполнителями. Эти посты имеют представленное изображение, а также пользовательские поля (MP3 -файл, ссылка на Facebook, ссылка MySpace и т. Д.).

У меня есть еще один пользовательский тип поста под названием «События».

Когда я создаю новое сообщение о событии, я бы хотел, чтобы возможность выбрать ящик для выбора одной из групп из пользовательского типа «Исполнители».

Это вставит все данные из конкретной группы/исполнителя в сообщение о событии (пользовательские поля, изображение и т. Д.).

Какой метод лучше всего подходит для вставки/инъекции такого рода петли из администратора "события"?

Это было полезно?

Решение

В настоящее время лучший способ, которым я знаю, это Сообщения 2 плагин:

Вот пример, показывающий, как настроить пользовательские типы публикаций (Если у вас их уже есть, то это больше для других, кто может прочитать это) а также функциональный вызов p2p_register_connection_type() необходим плагин для настройки отношений после. Это может пойти в вашу тему functions.php файл или в .PHP Файл для плагина, который вы можете писать:

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
}

Затем в файле шаблона вашей темы single-event.php Вы можете добавить код, подобный следующему, чтобы отобразить информацию о каждой полосе (Я показал основы здесь; я оставлю для вас, чтобы заполнить все детали и/или задать другие более конкретные вопросы здесь, на сайте WordPress ответов, таких как, если вам нужно знать, как получить показанное изображение и т. Д. )

<?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);
    }
  }
?>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top