Wordpess Timber-结合$ context可以得到两个post-type?

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

<?php

$context          = Timber::context();
$context['home_page_content'] = new Timber\PostQuery('post_type=vopthomepage');

// below are the two I want to combine

$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);

Timber::render( 'index.twig',$context );

任何帮助都将不胜感激!

litao7777 回答:Wordpess Timber-结合$ context可以得到两个post-type?

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

<?php

$context = Timber::context();

$context['home_page_content'] = new Timber\PostQuery('post_type=vopthomepage');

$eventArgs = [
    'post_type'      => 'mec-events','posts_per_page' => 10,'orderby'        => [
        'date' => 'DESC',],];

$postArgs = [
    'post_type'      => 'post','category_name'  => 'featured',];

$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,6 );

$context['posts'] = $posts;

Timber::render( 'index.twig',$context );

然后您可以在Twig中遍历该自定义帖子数组

{% for post in posts %}
    {# Display post teaser #}
{% endfor %}

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

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

要解决此问题,您可以例如每种帖子类型仅获取3个帖子,总共6个。您仍然可以使用wp_list_sort(),但是那样的话,您将至少显示3个帖子类型。

您还可以尝试为post_type中的WP_Query参数使用多个发布类型–它接受一系列发布类型,但是我想如果您只想包括特色类别的帖子。

本文链接:https://www.f2er.com/2670478.html

大家都在问