从2种不同的帖子类型中查询连接的帖子(使用posts2post)

时间:2014-01-16 作者:Maartje

假设我有3种帖子类型:帖子、议程和慈善。我使用插件Posts2posts 从scribu将某些帖子和某些议程项目连接到一些慈善项目。

在慈善机构的单页上,我想在侧栏中显示帖子和议程。我有两个问题:

1st problem: 我要混合,但仍按日期分类

2nd problem: 我只想显示与我的慈善帖子相关的帖子和议程项目。

看起来像是

-连接到此慈善机构的最后一个帖子

-与该慈善机构相关的最后一个议程项目

-Forlast post item连接到此慈善机构

-与该慈善机构相关的最后一个议程项目

当使用wp\\u query时,我不知道如何混合这些帖子类型并让它们以正确的顺序显示,只使用连接的类型。当使用scribu的例子时,我仍然不知道如何混合它们…:(

有人知道我该怎么做吗?

<小时>

UPDATE

我用jleander的答案进行了查询。我用过\'orderby\' => \'date\'\'order\' => \'DESC\' 首先显示最新发布的项目。但我想交替显示它们,比如:

最后一篇文章

最后一个议程项目

最后一篇文章

最后一个议程项目

jlaender大力帮助后的代码:

<div class="aside halfwidth">
    <?php
        $post_types = array(\'post\',\'agenda\');
        $connection_types = array(\'post_to_doel\',\'agenda_to_doel\');
        $args = array(
            \'connected_type\' => $connection_types,
            \'connected_items\' => get_queried_object_id(),
            \'post_type\' => $post_types,
            \'order\'  => \'DESC\',
            \'orderby\' => \'date\'
            );
        $connected_stuff = new WP_Query($args);
        if ( $connected_stuff->have_posts() ) :
        ?>
        <h3>Related pages:</h3>     
        <?php

        $posts = array();
        $agendas = array();
        $results = array();
        $posts[0] = \'first post\';
        $posts[1] = \'second post\';
        $posts[2] = \'third post\';
        $agendas[0] = \'first agenda\';
        $agendas[1] = \'second agenda\';
        $agendas[2] = \'third agenda\';
        while(!empty($posts) || !empty($agendas)) {
            if(!empty($posts)) {
                $results[] = array_shift($posts);
            }
            if(!empty($agendas)) {
            $results[] = array_shift($agendas);
            }
        }
        foreach($results as $result){
            echo $result; ?>

            <div class="connecteditems">
                <!--LOOPED HTML-->
            </div>

        <?php } ?>

        <?php 
        // Prevent weirdness
        wp_reset_postdata();
        endif;
    ?>
</div>

1 个回复
SO网友:jounileander

设置查询时,您需要做两件重要的事情。

您需要设置所有要查找的帖子类型,并且需要设置所有要查找的连接类型。使用数组设置post类型或连接类型的多个值。

下面的快速示例。当然,您需要为查询设置所有其他参数,但这应该包含您需要的所有关键参数。不要只是复制代码,因为您的连接类型名称可能与我的这个快速示例有所不同。

$post_types = array(\'post\',\'agenda\');
$connection_types = array(\'post_to_charity\',\'agenda_to_charity\');
$args = array(
    \'connected_type\' => $connection_types,
    \'connected_items\' => get_queried_object_id(),
    \'post_type\' => $post_types
    );
$connected_stuff = new WP_Query($args);
---编辑---回答下面的后续问题。您可以像这样混合两个单独的阵列。只需创建一系列帖子和议程。混合并输出混合数组。不确定这是否是最聪明的方式。不太确定你真正想要实现什么。但无论有多少帖子或议程,这都是可行的。

$posts = array();
$agendas = array();
$results = array();
$posts[0] = \'first post\';
$posts[1] = \'second post\';
$posts[2] = \'third post\';
$agendas[0] = \'first agenda\';
$agendas[1] = \'second agenda\';
$agendas[2] = \'third agenda\';
while(!empty($posts) || !empty($agendas)) {
    if(!empty($posts)) {
        $results[] = array_shift($posts);
    }
    if(!empty($agendas)) {
    $results[] = array_shift($agendas);
    }
}
foreach($results as $result){
    echo $result;
}

结束

相关推荐