2017-04-09 34 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网站真实。