链接两种帖子类型


8

在此先感谢您的帮助。

我做了一些搜索,这个问题已经参考“ posts 2 posts”插件回答了几次,但是关于它的文档是非常“以编码器为中心”的-我能够并且很舒服地得到我的脏手,但我确实需要比那里提供的更好的循序渐进文档。:)

这就是我所需要的。我正在使用gPress使用其自定义帖子类型生成“位置”。这工作得非常好。我需要做的是能够将“事件”添加到地方。我可以使用自定义帖子类型来捕获所有事件详细信息,但是我希望能够将事件附加到特定地点,反之亦然。如果某人正在查看事件帖子,则可以使用某种简单的方法来提取与事件相关的地方信息。

任何建议表示赞赏!

Answers:


9

Scribu的 帖子到帖子是一个很棒且简单的插件,我相信我们可以帮助您使其正常工作。的基本用法是非常简单的。

假设您的自定义帖子类型命名为'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.phpsingle-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
从Post2Post的1.4版开始,应使用“ p2p_init”代替“ init”来注册连接类型。
斯蒂芬2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.