У вас есть два варианта: объединить результаты или выполнить третий запрос. Мне всегда нравится последний, потому что тогда вы сохраняете объект запроса на месте, что весьма полезно для почтовых счетчиков и разбиения на страницы.
Мы должны быть умными здесь, так как это действительно может замедлить ход событий ненужным и может стать довольно дорогим, так это то, что мы будем делать
Выполнить два очень худой, очень умные запросы с get_posts
(более оптимизирован как обычный WP_Query
, так как он разбивает разбиение на страницы, что делает его более быстрым). Мы также просто запросим идентификаторы почтового ящика, а не полные. Это сделает эти запросы очень быстрыми и очень скудными. Это будет почти так же, как вы никогда не делали эти запросы ;-)
Как только у нас есть результаты из этих запросов, мы можем объединить идентификаторы и запустить окончательный запрос, чтобы возвращать полные объекты сообщения, которые мы можем использовать для запуска надлежащего петля
Давайте посмотрим на код
// Set our defaults to keep our code DRY
$defaults = [
'fields' => 'ids',
'update_post_term_cache' => false,
'update_post_meta_cache' => false,
'cache_results' => false
];
// Set query args for query 1
$args = [
'post_type' => 'post',
'posts_per_page' => '1',
];
// Set query args for query 2
$args1 = [
'post_type' => 'page',
'posts_per_page' => '3',
];
$post_query = get_posts(array_merge($defaults, $args ));
$page_query = get_posts(array_merge($defaults, $args1));
// Merge the two results
$post_ids = array_merge ($post_query, $page_query); //. You can swop around here
// We can now run our final query, but first mke sure that we have a valid array
if ($post_ids) {
$final_args = [
'post_type' => ['post', 'page'],
'post__in' => $post_ids,
'orderby' => 'post__in', // If you need to keep the order from $post_ids
'order' => 'ASC' // If you need to keep the order from $post_ids
];
$loop = new WP_Query($final_args);
// Run your loop as normal
}
Вам нужно два запроса, по крайней мере, –
Да, вы можете объединить '$ posts' свойства –
Пожалуйста, проверьте, я обновил мой question.How может Теперь я объединяю два запроса в одном запросе? – Johny