Korrekte Möglichkeit, mehrere Abfragen auszuführen, die einige Basisdaten freigeben

Ich muss drei Abfragen auf derselben Seite ausführen. Die “core” -Abfrage ist alle drei gleich – Auswahl von Beiträgen in einer bestimmten Taxonomie. Ich muss dann drei Abfragen für diese Untergruppe ausführen, die nach bestimmten Begriffen in einer anderen Taxonomie suchen.

Derzeit leite ich drei Abfragen von core + a, core + b und core + c ab, wobei ich reset_post_data () nach jedem Aufruf verwende . Das funktioniert gut, aber die Post-Tabelle, aus der die coreabfrage besteht, ist im Moment relativ klein. Wenn ich alle Daten und Daten für eine weitere coreabfrage eingegeben habe, wird sie sich wahrscheinlich verzehnfachen.

Gibt es eine Möglichkeit (sollte ich sein) zuerst die coreabfrage auszuführen, dann fragen + a, + b und + c danach? Wenn ja, wie behalte und rufe ich die coreabfrage auf? Mit rewind_posts () nach jeder Unterabfrage ?

dh Core-Abfrage -> AbfrageA -> Rewind_Posts () -> QueryB -> Rewind_Posts () – AbfrageC -> Reset_Post_Data ()

Oder würde es für den Overhead so wenig Unterschied machen, dass ich mich unnötigerweise Sorgen mache?

Im Moment überprüfen meine + a etc. -Abfragen nur, ob einer der Beiträge in der coreabfrage die Begriffe HABEN, aber ich kann wahrscheinlich jede Seite viel effizienter rendern (schnell!), Wenn ich nur die von der coreabfrage identifizierten Beiträge abfragen kann .

Ich habe versucht, das aus dem WordPress-Codex selbst herauszubekommen, aber ich denke, ich vermisse etwas, also hoffe ich, dass jemand mich in die richtige Richtung weisen kann. (Oder erzähl mir wenigstens, ob ich meine Zeit verschwende, damit ich aufhören kann zu schauen und zur nächsten Herausforderung überzugehen!)

Der Code, den ich momentan verwende, der funktioniert, ist:

$args = array( // Cuttings 'post_type' => 'nqsnip', 'tax_query' => array( array( 'taxonomy' => 'nqtos', 'field' => 'slug', 'terms' => '1', ), array( 'taxonomy' => 'nqshow', 'field' => 'slug', 'terms' => $post->post_name, ), ), ); $cutting_query = new WP_Query($args); if($cutting_query->found_posts > '2') { $pic_c = ''; } elseif($cutting_query->found_posts > '0') { $pic_c = 'Cutting icon'; } else { $pic_c = 'Cutting icon'; } wp_reset_postdata(); $args = array( // Questions 'post_type' => 'nqsnip', 'tax_query' => array( array( 'taxonomy' => 'nqtos', 'field' => 'slug', 'terms' => '2', ), array( 'taxonomy' => 'nqshow', 'field' => 'slug', 'terms' => $post->post_name, ), ), ); $question_query = new WP_Query($args); if($question_query->found_posts > '0') { $pic_q = ''; } else { $pic_q = 'Question icon'; } wp_reset_postdata(); $args = array( // Remarks 'post_type' => 'nqsnip', 'tax_query' => array( array( 'taxonomy' => 'nqtos', 'field' => 'slug', 'terms' => '3', ), array( 'taxonomy' => 'nqshow', 'field' => 'slug', 'terms' => $post->post_name, ), ), ); $remark_query = new WP_Query($args); if($remark_query->found_posts > '0') { $pic_r = ''; } else { $pic_r = 'Question icon'; } wp_reset_postdata(); $excerpt = $pic_c . $pic_q . $pic_r; 

Wie Sie sehen, sind das erste und dritte Element jeder Abfrage gleich, nur das zweite Element in jeder Abfrage unterscheidet sich. Und das zweite Element muss nur an den Stellen ausgeführt werden, die durch das erste und dritte Element identifiziert werden.

Solutions Collecting From Web of "Korrekte Möglichkeit, mehrere Abfragen auszuführen, die einige Basisdaten freigeben"