假设我有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>
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;
}