Wordpess Timber-结合$ context来获得两个后置类型?

问题描述 投票:0回答:1

在我的主页上,我想按日期顺序显示最近的新项目(标准的Wordpress'帖子')或事件(自定义帖子类型)。我将以下内容引入每种内容类型,但是得到的是按日期顺序排列的所有事件;其次是按日期顺序排列的所有新闻项-我想要的是按日期顺序排列的新闻或事件,因此,如果最新的项是事件,则首先是事​​件,其次是新闻项,必要时是事件,依此类推上。我认为有某种方式可以组合上下文?

$eventArgs  =   array(
'post_type'         =>  'mec-events',
'posts_per_page'    =>  -1,
'orderby'           =>  array(
'date'              =>  'DESC'
));
$context['mec_events'] = new Timber\PostQuery($eventArgs);

$postArgs   =   array(
    'post_type'     =>  'post',
    'posts_per_page'=>  -1,
    'category_name' =>  'featured',
    'orderby'       =>  array(
    'date'          =>  'DESC'
));
$context['featured_items'] = new Timber\PostQuery($postArgs);

任何帮助,不胜感激!

wordpress content-type timber
1个回答
0
投票

如果要合并两个查询然后对其进行排序,可以先将查询结果合并到单个数组中,然后使用wp_list_sort()进行排序。

wp_list_sort()

我要做的是限制您为每个查询获取的帖子数量。

如果发布的帖子和事件的数量随时间推移大致相同,则效果很好。但是,如果最新的帖子仅来自一种类型,则可以仅显示事件或帖子。

要解决此问题,您可以例如每种类型的帖子仅提取3个帖子,因此总共只有6个帖子。您仍然可以使用<?php $eventArgs = [ 'post_type' => 'mec-events', 'posts_per_page' => 10, 'orderby' => [ 'date' => 'DESC', ], ]; $postArgs = [ 'post_type' => 'post', 'posts_per_page' => 10, 'category_name' => 'featured', 'orderby' => [ 'date' => 'DESC', ], ]; $events = new Timber\PostQuery( $eventArgs ); $featured_items = new Timber\PostQuery( $postArgs ); $posts = array_merge( $events->get_posts(), $featured_items->get_posts() ); $posts = wp_list_sort( $posts, 'post_date', 'DESC' ); // Restrict to certain amount of items. $posts = array_slice( $posts, 0, 6 ); ,但这样一来,您将至少显示3个每种帖子类型。

[您也可以尝试为wp_list_sort()中的post_type参数使用多个发布类型–它接受一系列发布类型,但我想如果您只想包含< [精选类别。

© www.soinside.com 2019 - 2024. All rights reserved.