2017-04-09 101 views
6

我限制我的查詢使用顯示帖子從6個月前,它工作正常。查詢post_meta日期而不是post_date_gmt

但我需要它基於post_meta表中的日期而不是'post_date_gmt'。

在我來說,我有meta_keys被稱爲payment_date和值當然像31-10-2016例如日期。

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

回答

2

第一件事,第一date_query作品上post_date_gmt。如果你想 從元字段查詢發佈,那麼你必須使用meta_query

這裏是一個示例代碼:

$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; 

上面的代碼應該爲你工作。

相關問題:

希望這有助於!

3

檢查在這裏:https://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

如果滾動的例子,你會看到:

顯示文章,其中自定義字段鍵是一組日期和自定義字段值現在。僅顯示日期尚未通過的帖子。

$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); 

你的情況,你可以把這樣的:date("dmY", strtotime('6 months ago'))

1

試試這個代碼:

$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); 

檢查,如果你的post_type是在你的WordPress網站真實。