Can i merge 2 new WP_Query($variable) ‘s?

I am running a multisite network and i have setup a sql query that uses swith_to_blog(); and queries the posts.

Is there a way that i can declare the query inside a new WP_Query and actually merge that query with another?

Basically if i do this:

$number1 = new WP_Query($multisitequery);

Can i merge it with:

$number2 = new WP_Query($normalquery);

$normalquery holds settings like pagination, per page, excerpt, title etc… on a portfolio shortcode.

I would like it to include queried posts from my new $multisite query.

Can this be achieved? Just wanting to save me from creating a whole new shortcode setup lol

Many thanks in advance.


What i have is:

$portfolio = array();
$portfolio = $settings;

Further down my portfolio function “after all the $settings[‘options’]” i have:

$portfolio_query = new WP_Query( $portfolio );

the $portfolio_query uses a loop on a page template.

I want to add an extra query into this like so:

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){


   $globalquery = query_posts($args);

   $globalcontainer = array_merge( $globalcontainer, $globalquery );


where i assume that $globalcontainer would be the array to merge into the wp_query();.

So taking onboard what you have replied with, in theory i could simply:

$mergedqueryargs = array_merge($portfolio , $globalcontainer);
$portfolio_query = new WP_query($mergedqueryargs);

Would that be correct?

Second, regarding the array_merge array key overwrite…..
How would i go about stopping an overwrite?


You won’t do much good just merging the arguments, you need to merge the resulting posts array and the post_count count. This works for me:

//setup your queries as you already do
$query1 = new WP_Query($args_for_query1);
$query2 = new WP_Query($args_for_query2);

//create new empty query and populate it with the other two
$wp_query = new WP_Query();
$wp_query->posts = array_merge( $query1->posts, $query2->posts );

//populate post_count count for the loop to work correctly
$wp_query->post_count = $query1->post_count + $query2->post_count;

Leave a Comment