it-swarm.com.de

Verwenden von "posts_where" für eine Abfrage mit einem benutzerdefinierten Feld

Ich habe eine Seite, auf der Tourdaten für einen Künstler angezeigt werden. Ich benutze ein benutzerdefiniertes Feld (TheDate), um jedem Eintrag einen numerischen Wert zuzuweisen, damit sie in der richtigen Reihenfolge angezeigt werden (unabhängig davon, wann sie tatsächlich veröffentlicht wurden). Im benutzerdefinierten Feld werden die folgenden Werte verwendet: 20110315 (dies würde für ein Datum am 15. März 2011 verwendet. Ich möchte, dass die Seite nur Daten für heute und danach zurückgibt und keine Daten zurückgibt, die vergangen sind. Ich glaube, ich habe die Grundlagen Nach unten, aber ich mache offensichtlich etwas nicht richtig. Hier ist, was ich habe, aber es gibt nichts zurück. Wenn ich den Filter herausnehme, funktioniert es (gibt aber alle Daten zurück, auch vergangene), also muss ich etwas falsch machen Mit dem Filter. Jede Hilfe, Beratung oder Richtung wäre sehr dankbar. Vielen Dank.

$todaysdate = date('Ymd');

function filter_where( $where = '' ) {

$where .= " AND ( ($wpdb->postmeta.meta_key = 'TheDate' AND $wpdb->postmeta.meta_value >= $todaysdate) ) ";

return $where;
}

add_filter( 'posts_where', 'filter_where' );

$args = array(
'cat' => '4',
'posts_per_page' => -1,
'orderby'  => 'meta_value_num',
'meta_key' => 'TheDate',
'order' => 'ASC'
);

$the_query = new WP_Query( $args );
1
user3958

sie brauchen für diese Art von Abfrage keinen posts_where zu verwenden. Sie können einfach " meta_query " verwenden.

$today = date("Ymd");   
$args = array(
    'meta_query' => array(
        array(
            'key' => 'TheDate',
            'value' => $today,
            'compare' => '>='
        )
    ),
    'cat' => '4',
    'posts_per_page' => -1,
    'orderby'  => 'meta_value_num',
    'meta_key' => 'TheDate',
    'order' => 'ASC'
);

$the_query = new WP_Query( $args );
4
Bainternet