2017-04-09 1 views
6

Ich beschränke meine Abfrage Show-Post von vor 6 Monaten zu verwenden, die gut funktioniert.Abfrage post_meta date anstelle von post_date_gmt

Aber ich brauche es basierend auf einem Datum, das in der post_meta Tabelle statt 'post_date_gmt' ist.

In meinem Fall habe ich meta_keys payment_date und die Werte sind natürlich ein Datum wie 31-10-2016 zum Beispiel genannt werden.

$months_ago = 6; 
$args = array(
'date_query' => array(
    array(
     'column' => 'post_date_gmt', 
     'after' => $months_ago . ' months ago', 
     ) 
    ), 
'numberposts' => -1 
); 

Antwort

2

Das erste, was zuerst date_query Arbeiten auf post_date_gmt. Wenn Sie möchten, Post von Meta-Feldern abzufragen, dann müssen Sie meta_query verwenden. Hier

ist ein Beispielcode:

$months_ago = 6; 
$args = [ 
    //... 
    //... 
    'posts_per_page' => -1, // Unlimited posts 
    //... 
    //... 
    'meta_query' => [ 
     'relation' => 'AND', 
     [ 
      'key' => 'payment_date', 
      'value' => date('d-m-Y', strtotime($months_ago . ' months ago')), //<-- Converting date into your custom date format 
      'compare' => '>', //you can also use <=, >=, <, etc.. 
      'type' => 'DATE' 
     ], 
    ] 
]; 

$query = new WP_Query($args); 

if ($query->have_posts()) : 
    /* Start the Loop */ 
    while ($query->have_posts()) : $query->the_post(); 

    //you post 

    endwhile; 
endif; 

Der obige Code sollte für Sie arbeiten.

Verwandte Frage:

hoffe, das hilft!

3

es hier ansehen: https://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

Wenn Sie die Beispiele blättern, werden Sie sehen:

anzeigen Beiträge, wo das benutzerdefinierte Feld Schlüssel ist ein Datum und die benutzerdefinierten Feldwert jetzt. Zeigt nur Beiträge an, deren Datum noch nicht abgelaufen ist.

$args = array(
    'post_type' => 'event', 
    'meta_key'  => 'event_date', 
    'meta_value' => date("Ymd"), // change to how "event date" is stored 
    'meta_compare' => '>', 
); 
$query = new WP_Query($args); 

In Ihrem Fall könnten Sie so etwas wie gesagt: date("dmY", strtotime('6 months ago'))

1

diesen Code Versuchen:

$sixmonthagodate = date("d-m-Y", strtotime('-6 Months')); 

$args = array(
    'post_type' => 'post', 
    'posts_per_page' => -1, 
    'meta_key'  => 'payment_date', 
    'meta_value' => $sixmonthagodate, 
    'meta_compare' => '>', 
); 
$query = new WP_Query($args); 

prüfen, ob, wenn Ihr post_type ist in Ihrer Wordpress-Website wahr.

Verwandte Themen