WordPress Beiträge zwischen den Parametern filtern

Wie man WordPress Beiträge durch eine Taxonomie und zwischen Parameter filtert? Betrachten Sie eine mobile Website mit “Speichergröße” Taxonomie, muss ich Beiträge zeigen, die mehr als 256 MB Speicher und weniger als 768 MB haben. Ist es möglich, durch WP_Query-class oder “posts_where” -Filter? Ich weiß, dass post_meta für diesen Zweck besser ist, aber die Website wurde zuvor erstellt.

Solutions Collecting From Web of "WordPress Beiträge zwischen den Parametern filtern"

Steuerabfragegrenzen

Eine Taxonomie-Abfrage in WordPress unterstützt die folgenden drei Argumente für den operator Parameter: IN , NOT IN und AND . Es kann also grundsätzlich nicht das machen, was du versuchst. Nicht einmal mit erweiterten ( tax_query ) Abfragen.

Meta-Abfrage und Möglichkeiten

Sie sollten Ihr Konzept ein wenig bewegen und mit Post-Meta-Feldern / Daten arbeiten. WP_Query verwendet WP_Meta_Query , was einige Vorteile gegenüber WP_Tax_Query . Die wichtigste (für diese Frage) ist, dass es erweiterte Beziehungen durch die compare und Sie können auch nach ihr sortieren: 'orderby' => 'meta_value_num' und 'orderby' => 'meta_value' .

(string) compare – Zu testender Operator. Mögliche Werte sind '=' , '!=' , '>' , '>=' , '< ' , '< =' , 'LIKE' , 'NOT LIKE' , 'IN' , 'NOT IN' , 'BETWEEN' , 'NOT BETWEEN' , 'EXISTS' (nur in WP> = 3.5) und 'NOT EXISTS' (auch nur in WP> = 3.5). Standardwert ist '=' .

- Zitat aus dem Meta-Query- Teil der WP_Query Dokumentation @Codex wp dot org.

Sie könnten (sollten) also Ihre Taxonomien, die Sie sortieren und filtern / suchen möchten, zu benutzerdefinierten Feldern / Metadaten machen.

Nicht möglich? Stufen Taxonomien für die Rettung.

Wie ich oben bereits erklärt habe, gibt es einen IN Operator für Taxonomieabfragen. Also, was Sie tun könnten, ist ein Anruf an get_terms() Quelle: queryposts.com und greifen Sie alle Begriffe, die in Ihrer Reichweite sind und dann eine Reihe von Taxons / Begriffe, die als Ihre "Limiter" dient.

 // Set "min/max"-limits: $min = 256; $max = 768; // Get all terms in that taxonomy $memory = get_terms( array( 'memory_size' ) ); // Container for our values $mem_range = array(); // Check if we got an error if ( ! is_wp_error( $memory ) ) { foreach ( $memory as $val ) { // Convert to absolute integer for comparison $val = absint( $val ); // Add to stack $val >= $min AND $val < = $max AND $mem_range[] = $val; } } // Debug else { // Output only for admin users and others that have that cap current_user_can( 'manage_options' ) AND print $memory->get_error_message(); } // Setup the basic arguments $args = array( 'post_type' => 'hardware' ); // Check if we got some terms in range if ( ! empty( $mem_range ) ) { $args['tax_query'] = array( array( 'taxonomy' => 'memory_size', 'field' => 'slug', 'terms' => $mem_range, 'operator' => 'IN' ) ); } // Grab the results $hardware_search = new WP_Query( $args ); 

Fazit

Dies ist zwar nicht die beste Idee für Websites mit hoher performance, da Sie zwei Abfragen für eine einzelne Aufgabe ausführen, aber möglicherweise die Anforderungen erfüllen. Ich würde immer noch empfehlen, auf Metadaten für komplexere Einzelabfragen umzusteigen.