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.
Rory
EDIT========
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){
switch_to_blog($blog->blog_id);
$globalquery = query_posts($args);
$globalcontainer = array_merge( $globalcontainer, $globalquery );
restore_current_blog();
}
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;