Если вы хотите объединить два запроса, а затем отсортировать их, вы можете сначала объединить результаты запроса в один массив, который вы затем сортируете с помощью 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',
'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 );
$context['posts'] = $posts;
Timber::render( 'index.twig', $context );
* 1006. * Затем вы можете l oop через этот массив пользовательских постов в Twig
{% for post in posts %}
{# Display post teaser #}
{% endfor %}
Я бы ограничил количество постов, которые вы выбираете для каждого из запросов.
Это хорошо работает, если количество опубликованных постов и событий примерно одинаково во времени. Однако вы можете завершить показ только событий или постов, если самые новые посты относятся только к одному типу.
Чтобы обойти это, вы можете, например, выбрать только 3 поста каждого типа постов, чтобы сделать его общим из 6. Вы по-прежнему можете использовать wp_list_sort()
, но таким образом у вас будет отображаться как минимум 3 типа сообщений каждого типа.
Вы также можете попробовать использовать более одного типа сообщения для аргумента post_type
в WP_Query
- он принимает массив типов сообщений, но, думаю, это не сработает, если вы захотите включить сообщения только из категории признакам .