Suchabfrage erneut ausführen ohne Seitenumbruch gibt keine Ergebnisse?

Aktualisieren:

Diese Frage ist nicht mehr relevant. Ich habe etwas Code geändert, also funktioniert jetzt die Filterung.

Scheint wie die Abfrage nicht funktionierte, weil ich die indexTaxonomyCounts function aus einer Vorlage ausgetriggers indexTaxonomyCounts ?

Aber ich habe jetzt ein anderes Problem, aber werde eine andere Frage dafür schreiben.

Ursprüngliche Frage:

Ich möchte meine benutzerdefinierten Produkte anhand einiger Taxonomie- und Meta-Filter filtern. Dies funktioniert für normale Abfragen, nicht jedoch für meine Suchergebnisse. Zumindest funktioniert die Filterung, aber die richtigen Zahlen irgendwie nicht zu bekommen.

Was ich mache ist folgendes:

  • Ich pre_get_posts mich in den pre_get_posts Hook ein und verwende die Daten von $ _GET, um Taxonomie- und Meta-Abfragen zu erstellen.

  • Dann speichere ich die Abfrage, die ich gerade erstellt habe (einschließlich der Filterung), so dass ich auf der Ergebnisseite für jeden Taxonomie- / Meta-Filter berechnen kann, wie viele Ergebnisse es insgesamt gibt.

Aber irgendwie, wenn ich die gespeicherte Suchanfrage erneut posts_per_page=-1 (aber jetzt mit posts_per_page=-1 ) bekomme ich keine Ergebnisse? Keine Ahnung warum. Führt die Suche andere Abfragen als normale Abfragen durch?

Vielleicht ist es klarer mit einigen Code-Schnipsel.

Die folgende function funktioniert, die Suchergebnisse werden gefiltert und alle:

 add_action('pre_get_posts', array($this, 'pre_get_posts_hook')); public function pre_get_posts_hook( $query_obj ) { //check if this isn't the internal query, since that doesn't need filtering ^^ if( empty($query_obj->query_vars['internal-query']) || $query_obj->query_vars['internal-query'] != true ) { $tax_query = array(); $meta_query = array(); if(isset($_GET['someMetaFilter']) { foreach(explode(',', $_GET['someMetaFilter']) as $tax_value) { $meta_query[] = array( 'key' => urldecode($tax_value), 'value' => array(''), 'compare' => 'NOT IN', ); } } if(isset($_GET['someTaxonomyFilter']) { foreach(explode(',', $_GET['someTaxonomyFilter]) as $tax_id) { $ids[] = urldecode($tax_id); } $tax_query[] = array( 'taxonomy' => $type, 'field' => 'term_id', 'terms' => array_map('intval', $ids), 'include_children' => false, 'operator' => 'AND' ); } if(count($tax_query)) { $tax_query['relation'] = 'AND'; $query_obj->set('tax_query', $tax_query); } if(count($meta_query)) { $meta_query['relation'] = 'AND'; $query_obj->set('meta_query', $meta_query); } //only set it if we have set a specific filter set if(count($tax_query) || count($meta_query)) { self::$query_vars = $query_obj->query_vars; } return $query_obj; } 

Diese function wird von der Ergebnisseite aufgerufen, um alle Zählungen für die Taxonomien zu berechnen. Aber das führt nur zu 0 Ergebnissen: S

Das einzige, was ich mache, ist, die vorher verwendeten query_vars zu bekommen und die post_per_page auf -1 zu setzen (damit ich alle Ergebnisse bekommen kann, anstatt nur für diese Seite)

 public static function indexTaxonomyCounts() { if (isset(self::$query_vars)) { $query_vars = self::$query_vars; $query_vars['posts_per_page'] = -1; $query_vars['internal-query'] = true; //to prevent the pre_get_posts_hook to adjust the query $wpQuery = new WP_Query($query_vars); //somehow in the regular query, this works. But when I do this in a search result page, the $wpQuery->have_posts() is empty! But the result page does have 30+ results or something :S // The Loop if ( $wpQuery->have_posts() ) { while ( $wpQuery->have_posts() ) { ... do some calculations based on the taxonomy and such ... } } /* Restore original Post Data */ wp_reset_query(); } } 

Ich habe so viele Dinge ausprobiert, ich weiß nicht mehr was. Ich habe die query_vars kopiert, die WpQuery kopiert. Ich habe versucht, die WpQuery zu rekonstruieren, indem ich die ?s=$_GET['s'] oder so etwas hinzufüge. Aber zu keinem Ergebnis.

Wenn also jemand weiß, was die Ursache dafür ist, wäre ich so dankbar!

Zusätzliche Informationen (1)

Ok, ich habe ein wenig Logging gemacht (mit dem posts_request Filter und ich habe 2 Dumps von Daten. Es ist viel zu groß um es hier posts_request .

Also habe ich sie in meine Dropbox hochgeladen:

Dieser funktioniert: https://www.dropbox.com/s/a07defqjx1d95j0/regular-page.php
Und das tut es nicht: https://www.dropbox.com/s/zboiw4fjqojotw7/search-page.php

Wie Sie in den Code-Schnipsel oben sehen können, verwende ich einfach die gleichen query_vars. Die beiden query_vars unterscheiden sich nur geringfügig, aber ich bin mir nicht sicher, was das verursacht.

Die SELECT * FROM mug_posts WHERE 1=2 ist seltsam, aber die Suche gibt Ergebnisse zurück – so dachte ich, dass die Suche eine andere Frage hat ???

Zusätzliche Informationen (2)

Ok, es wird noch seltsamer. Ich habe die Logik vereinfacht, ich habe die ganze Taxonomie gefiltert und so weiter. In den pre_get_posts speichere ich die Abfrage und auf einer Seite rufe ich eine function auf, die diese gespeicherte Abfrage überprüft und diese erneut pre_get_posts . Aber ich bekomme keine Ergebnisse zurück!

 public function pre_get_posts_hook( $query_obj ) { if( $query_obj->is_page() == false ) { if( $query_obj->query_vars['post_type'] == 'products' ) { if ( ($query_obj->is_main_query() == false && $this->filterIsActive()) || $query_obj->is_search()) { self::$query_vars = $query_obj->query_vars; } } } return $query_obj; } public static function indexTaxonomyCounts() { if (isset(self::$query_vars)) { $query_vars = self::$query_vars; $wpQuery = new WP_Query($query_vars); echo $wpQuery->have_posts(); // -> false /* Restore original Post Data */ wp_reset_query(); } } 

Ich habe die query_vars für eine reguläre Seite und für die Suchseite gedruckt und sie sind fast identisch:

Abfrage vars auf einer regulären Seite: https: // www. dropbox.com /s/nxy75avclwtr5xt/result.php
Abfrage vars auf einer Suchseite: https: // www. dropbox.com /s/g72nhsfwej9q95c/no-result.php

(Entschuldigung für den seltsamen Link, aber ich habe noch nicht genug Reputation, um weitere Links zu posten)

Da die Abfragevariablen (fast) identisch sind, würden sie das gleiche Ergebnis liefern. Nein: P

Solutions Collecting From Web of "Suchabfrage erneut ausführen ohne Seitenumbruch gibt keine Ergebnisse?"