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.