Filtern Sie WP_Query nach Posts mit einem bestimmten Metawert


7

Wie filtere ich WP_Query nach Posts mit einem bestimmten Metawert, ohne eine benutzerdefinierte Auswahlabfrage zu verwenden?

Ich habe einen benutzerdefinierten Posttyp mit Meta-Schlüssel: "Öffnen" und Meta-Wert-Optionen: "Ja" oder "Nein".

Ich möchte Beiträge nur mit meta_value = yes für meta_key = "open" anzeigen.

function filter_where($where = '') {    

    $open = "yes";

    //$where .= " AND post_date > '" . date('Y-m-d', strtotime('-2 days')) . "'";
    return $where;
}
add_filter('posts_where', 'filter_where');

Tun Sie dies in einer Vorlagendatei? Können Sie dann den vollständigen Code Ihrer Vorlagendatei veröffentlichen? Ist dies die Hauptschleife dieser Seite?
Jan Fabry

Antworten:


11

Ich bin mir aus Ihrer Formulierung nicht sicher, ob Sie es nicht mit einem Abfrageargument versucht haben oder ob es nicht funktioniert hat?

$the_query = new WP_Query(array( 'meta_key' => 'open', 'meta_value' => 'yes' ));

Benutzerdefinierte Feldparameter im Codex.


Vielen Dank für Ihre schnelle Antwort. Ich habe das versucht, aber aus irgendeinem Grund funktioniert es bei mir nicht. Denn es wirft eine 404.
Henk Jan

Wo haben Sie den Code platziert?
t31os

Ich habe es nach meiner $ paged-Einstellung in ein $ args-Array eingefügt: $ paged = (get_query_var ('paged'))? get_query_var ('paged'): 1; und vorher: $ temp = $ wp_query; $ wp_query = null; $ wp_query = new WP_Query ($ args);
Henk

@Henk Jan bitte Code zu Ihrer Frage hinzufügen, Kommentar sind dafür ungeeignet
Rarst

Mein benutzerdefinierter Beitragstyp wurde nicht ordnungsgemäß in der Datenbank registriert. Nachdem ich das behoben hatte, hat Ihre Lösung den Trick getan. Vielen Dank.
Henk

1
 $querystr = "
    SELECT wposts.* 
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
    WHERE wposts.ID = wpostmeta.post_id 
    AND wpostmeta.meta_key = 'custom-key' 
    AND wposts.post_type = 'page' 
    ORDER BY wpostmeta.meta_value DESC
    ";

2
Eine Erklärung würde uns sagen, warum dies eine Antwort ist.
Brian Fegter

Verdoppeln Sie das. Außerdem: Verwenden Sie die $wpdbMethoden, wenn Sie Abfragen durchführen.
Kaiser
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.