Kategorisieren von Suchergebnissen basierend auf benutzerdefinierten Feldern

Ich habe zwei Gruppen von Posts – einige haben ein benutzerdefiniertes Feld (true / false). Also diejenigen, die ein benutzerdefiniertes Feld (für diesen, nennen wir es einfach custom_field ) Wert von true , gehen in einem Satz, und die anderen (die mit false oder häufiger, wo das custom_field nicht in diesem Beitrag existiert ) geh in den anderen Satz.

Wenn ich nach etwas suche, möchte ich in der Lage sein, diese beiden Sätze von Beiträgen getrennt voneinander zu zeigen, dh, so wird das erste Ergebnis ( true ) angezeigt und dann das zweite Ergebnis ( false )). Das alles funktioniert gut, aber ich muss auch in der Lage sein, die Ergebnisanzahl für jeden Satz anzuzeigen. Ich habe eine WP_Query die meiner Meinung nach funktionieren würde:

 $postsTrue = new WP_Query( array( "s" => get_search_query(), "meta_key" => "custom_field", "meta_value" => "true") ); $countTrue = $postsTrue->post_count; 

Also sollte dieser die Anzahl der Ergebnisse bekommen, wo der Wert von custom_field true . Es erhält jedoch alle Ergebnisse (sowohl für true als auch für false ).

Wie gehe ich beim Schreiben einer Abfrage vor, um nur die Anzahl der Ergebnisse zu erhalten, bei denen der Wert von custom_field true ?

Solutions Collecting From Web of "Kategorisieren von Suchergebnissen basierend auf benutzerdefinierten Feldern"

Anstelle von $postsTrue->post_count; , probiere $postsTrue->found_posts; was die Anzahl der abgefragten Beiträge zurückgibt. $post_count zählt alle angezeigten Posts.

Referenz: Kodex

Ich denke, hier sind Ihre besten Freunde die meta_compare Vergleichsparametern auf WP_Query . Hast du das probiert?

Auch eine Idee, aber die Verwendung von meta_value_num möglicherweise, wenn WP bool(true) als 1 meta_value_num .

Wie Mike sagte, mein erster Gedanke ist, was Ihr tatsächlicher Meta-Wert ist. Ob es als String gespeichert wird oder ob es sich um einen booleschen Wert handelt … denn das wird definitiv alles vermasseln.

Zweitens würde ich empfehlen, etwas wie erweiterte benutzerdefinierte Felder zu verwenden, anstatt die Vanilla-Felder von WordPress zu verwenden. Es macht es viel schwerer für den Benutzer zu versauen, weil in solchen Fällen kann mit einem Dropdown-oder Radio-Taste behandelt werden; oder sogar eine Tickbox (meine bevorzugte für Ihre Situation).

Ein Häkchen gibt einen booleschen Wert zurück, so dass Sie eine Metaabfrage machen können, die nach Ja sucht, und dann eine Abfrage, die nach nicht Ja sucht (das ist Nein, ODER leer).

Schließlich, eine kleine persönliche Vorliebe … übergeben WP_Query Argumente als ein Array; macht es einfacher zu lesen.

 $YesArgs = array( 's' => get_search_query(), 'meta_query' => array( array( 'key' => 'custom_field', 'value' => 'yes' ) ) ); $postsTrue = new WP_Query($YesArgs); $NoArgs = array( 's' => get_search_query(), 'meta_query' => array( array( 'key' => 'custom_field', 'value' => 'yes', 'compare' => '!=' ) ) ); $postsFalse = new WP_Query($NoArgs);