Как вставить контент из другого пользовательского типа поста в пост?
-
16-10-2019 - |
Вопрос
Скажем, у меня есть пользовательский тип поста, называемый «исполнителями». Это заполняется различными группами/исполнителями. Эти посты имеют представленное изображение, а также пользовательские поля (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);
}
}
?>