Я использую многосайтовую сеть и настроил SQL-запрос, который использует swith_to_blog (); и запрашивает сообщения.
Есть ли способ, которым я могу объявить запрос внутри нового WP_Query и фактически объединить этот запрос с другим?
В основном, если я делаю это:
$number1 = new WP_Query($multisitequery);
Могу ли я объединить это с:
$number2 = new WP_Query($normalquery);
$normalquery
содержит настройки, такие как разбиение на страницы, на страницу, отрывок, заголовок и т. д. в коротком коде портфолио.
Я хотел бы включить запрошенные сообщения из моего нового $multisite
запроса.
Можно ли этого достичь? Просто хочу спасти меня от создания совершенно новой настройки шорткода LOL
Спасибо заранее. Рори
EDIT ========
Что у меня есть:
$portfolio = array();
$portfolio = $settings;
Далее вниз по моей функции портфолио "после всех настроек $ ['options']" у меня есть:
$portfolio_query = new WP_Query( $portfolio );
$portfolio_query
использует цикл на шаблоне страницы.
Я хочу добавить дополнительный запрос в это так:
global $wpdb, $blog_id, $post;
$blogs = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM wp_blogs ORDER BY blog_id" ) );
$globalcontainer = array();
foreach ($blogs as $blog){
switch_to_blog($blog->blog_id);
$globalquery = query_posts($args);
$globalcontainer = array_merge( $globalcontainer, $globalquery );
restore_current_blog();
}
где я предполагаю, что $globalcontainer
это будет массив для объединения в wp_query();
.
Таким образом, принимая во внимание то, что вы ответили, теоретически я мог бы просто:
$mergedqueryargs = array_merge($portfolio , $globalcontainer);
$portfolio_query = new WP_query($mergedqueryargs);
Это было бы правильно?
Во-вторых, что касается перезаписи ключа массива array_merge ..... Как бы я остановил перезапись?
Я обычно объединяю их массивы идентификаторов и делаю третий запрос. Чтобы первый набор запросов был дешевым, я возвращаю их идентификаторы только с помощью параметра fields, например:
Надеюсь это поможет
---РЕДАКТИРОВАТЬ---
После моего ответа оригинальный вопрос отредактирован для получения информации о нескольких участках. В случае слияния мультисайтовых постов это не работает.
источник
'orderby' => 'post__in'
последний запрос.Итак, если у вас есть это:
Я полагаю, вы определяете это где-то ранее?
... в этом случае, чтобы объединить два запроса, просто
array_merge()
два массива перед передачей ихnew WP_Query()
:Обратите внимание, что порядок важен при
array_merge()
звонке. Если оба имеют одинаковый ключ массива, второй массив перезапишет первый массив.источник