Ich verwende ein Netzwerk mit mehreren Standorten und habe eine SQL-Abfrage eingerichtet, die swith_to_blog () verwendet. und fragt die Beiträge ab.
Gibt es eine Möglichkeit, die Abfrage in einer neuen WP_Query zu deklarieren und diese Abfrage tatsächlich mit einer anderen zusammenzuführen?
Grundsätzlich wenn ich das mache:
$number1 = new WP_Query($multisitequery);
Kann ich es zusammenführen mit:
$number2 = new WP_Query($normalquery);
$normalquery
enthält Einstellungen wie Paginierung, pro Seite, Auszug, Titel usw. in einem Portfolio-Shortcode.
Ich möchte, dass abgefragte Posts aus meiner neuen $multisite
-Abfrage hinzugefügt werden.
Kann das erreicht werden? Ich möchte mich nur davor retten, ein neues Shortcode-Setup zu erstellen. Lol
Vielen Dank im Voraus. Rory
EDIT ========
Was ich habe, ist:
$portfolio = array();
$portfolio = $settings;
Weiter unten in meinem Portfolio habe ich "nach all den $ settings ['options']":
$portfolio_query = new WP_Query( $portfolio );
der $portfolio_query
verwendet eine Schleife in einer Seitenvorlage.
Ich möchte eine zusätzliche Abfrage wie folgt hinzufügen:
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();
}
dabei gehe ich davon aus, dass $globalcontainer
das Array ist, das mit der wp_query();
zusammengeführt werden soll.
Wenn Sie also auf das eingehen, was Sie geantwortet haben, könnte ich theoretisch einfach:
$mergedqueryargs = array_merge($portfolio , $globalcontainer);
$portfolio_query = new WP_query($mergedqueryargs);
Wäre das richtig?
Zweitens, in Bezug auf das Überschreiben des Array-Schlüssels array_merge ..... Wie würde ich vorgehen, um ein Überschreiben zu stoppen?
Sie werden nicht viel Gutes tun, wenn Sie nur die Argumente zusammenführen. Sie müssen das resultierende posts-Array und die post_count-Anzahl zusammenführen. Das funktioniert bei mir:
//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;
Im Allgemeinen füge ich ihre ID-Arrays zusammen und stelle eine dritte Abfrage. Um den ersten Satz von Abfragen billig zu halten, gebe ich nur die IDs zurück, die den folgenden fields-Parameter verwenden:
//setup your queries with extra parameter fields => ids
$query1 = new WP_Query(array('fields' => 'ids','other_parameters' => 'etc'));
$query2 = new WP_Query(array('fields' => 'ids','other_parameters'=>'etc'));
//now you got post IDs in $query->posts
$allTheIDs = array_merge($query1->posts,$query2->posts);
//new query, using post__in parameter
$finalQuery = new WP_Query(array('post__in' => $allTheIDs));
Hoffe das hilft
--- BEARBEITEN ---
Nach meiner Antwort wird die ursprüngliche Frage für mehrseitige Details bearbeitet. Bei Post Merges mit mehreren Standorten funktioniert dies nicht.
Also, wenn du das hast:
$number1 = new WP_Query($multisitequery);
$number2 = new WP_Query($normalquery);
Ich nehme an, Sie definieren diese irgendwo vorher?
$multisitequery = array();
$normalquery = array();
... in diesem Fall müssen Sie zum Zusammenführen der beiden Abfragen nur array_merge()
die beiden Arrays eingeben, bevor Sie sie an new WP_Query()
übergeben:
$merged_query_args = array_merge( $normalquery, $multisitequery );
$merged_query = new WP_Query( $merged_query_args );
Beachten Sie, dass die Reihenfolge beim Aufruf von array_merge()
wichtig ist. Wenn beide denselben Array-Schlüssel haben, überschreibt das zweite Array das erste Array.