Связывание двух типов постов

8

и заранее спасибо за вашу помощь.

Я провел некоторый поиск, и на этот вопрос пару раз отвечали со ссылкой на плагин "posts 2 posts", но документация по нему очень "ориентирована на кодера" - я могу и удобно получить свой руки грязные, но мне нужна пошаговая документация лучше, чем там. :)

Вот что мне нужно. Я использую gPress для создания "Мест", используя их собственный тип записи. Это работает на удивление хорошо. Что мне нужно сделать, так это уметь добавлять «События» в место. Я могу использовать пользовательский тип записи, чтобы захватить все детали события, но затем я бы хотел иметь возможность прикреплять события к определенному месту и наоборот. Если бы кто-то просматривал сообщение о событии, было бы несколько проще получить информацию о месте, связанную с событием.

Любые предложения приветствуются!

Джон
источник

Ответы:

9

Scribu -to-posts - отличный и простой плагин, я уверен, что мы можем помочь вам заставить его работать. Основное использование довольно просто.

при условии, что ваши пользовательские типы записей названы 'place'и 'event', следующий код будет помещен в файл functions.php вашей темы:

function my_connection_types() {
    p2p_register_connection_type( array(
        'name' => 'events_to_places', 
        'from' => 'event',
        'to' => 'place',
    ) );
}
add_action( 'p2p_init', 'my_connection_types', 100 );

это сделает мета-блоки для назначения отношений доступными на ваших пользовательских экранах редактирования сообщений.

для отдельных страниц и страниц событий вы можете создавать собственные шаблоны в своей теме, следуя иерархии шаблонов WordPress single-{post_type}.php, так что в вашем случае single-event.phpи single-place.php. Вы можете скопировать их из шаблона single.php.

Чтобы перечислить соединения, нам просто нужно немного кода в этих шаблонах везде, где мы хотим вывести список. это будет происходить в шаблоне места и выводить связанные события:

<?php
$connected = new WP_Query( array(
    'connected_type' => 'events_to_places', 
    'connected_items' => get_queried_object()
) );

echo '<p>Related events:</p>';
echo '<ul>';
while( $connected->have_posts() ) : $connected->the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;
echo '</ul>';

wp_reset_postdata();
?>
Milo
источник
Мило, блестящий - это то , что мне было нужно, и по какой - то причине я не прописано ничего найти совсем так, поэтому я ценю время , которое вы приняли , чтобы зацепить это. Ура!
Джон
1
Начиная с версии 1.4 Post2Post, вы должны использовать «p2p_init» вместо «init» для регистрации типов соединений.
Стефан