问题描述

并提前感谢您的帮助。

我已经做了一些搜索,这个问题已经回答了几次,参考 「帖子 2 帖子」 插件,但文档是非常”coder-centric” – 我能够和舒适地让我的手脏,但我确实需要比那里更好的 Step-by-Step 文档。 🙂

这就是我需要的。我使用 gPress 使用他们的自定义帖子类型生成”Places” 。这是非常好的工作。我需要做的是能够将”Events” 添加到一个地方。我可以使用自定义的帖子类型来捕获所有的事件详细信息,但是我希望能够将事件附加到特定的位置和 vice-versa 。如果有人正在查看活动信息,那么还有一个简单的方法可以拉出与活动相关的地点信息。

任何建议赞赏!

最佳解决方案

Scribu’s posts-to-posts 是一个很好的和简单的插件,我相信我们可以帮你找到它。 basic usage 非常简单。

假设您的自定义帖子类型被命名为'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 template hierarchy 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();
?>

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。