按自定义元,当前日期和正确的查询格式查询

时间:2014-04-25 22:25:50

标签: wordpress wp-query

我使用高级自定义字段将字段添加到事件自定义帖子类型。 相关字段为event_datefeature_event

帖子按event_date排序,并使用feature_event选择特色事件,如果选中复选框"是"选择事件显示在特色部分,如果没有,则显示下一个最近的事件。

使用此代码设置并正常工作:

$args=array(
 'post_type' => 'event',
 'post_status' => 'publish',
 'posts_per_page' => 1,
 'order' => 'ASC',
 'orderby' => 'meta_value',
 'meta_query' => array(
       'relation' => 'OR',
        array(
            'key' => 'feature_event',
            'value' => 'yes',
            'compare' => 'LIKE'
        )
   )
);

我还将剩下的事件排序在另一个查询中,如果事件日期已经过去,事件不再显示,则设置并使用此代码正常工作,我发现here

$today = date("Y-m-d");
$args = array( 
        'post_type' => 'event', 
    'posts_per_page' => -1,
    'meta_key' => 'event_date',
    'orderby' => 'meta_value',
    'order' => 'ASC',
    'meta_query' => array(
            array(
               'key' => 'event_date',
               'meta-value' => $value,
               'value' => $today,
               'compare' => '>=',
               'type' => 'datetime'// you can change it to datetime also
           )
    )
);

我被困的地方是我想要第一个查询来显示特色事件,但是如果日期已经过去没有显示该事件,与上面的第二个查询相同,基本上将两者结合起来查询。

我已经尝试将第二个数组添加到meta_query,但即使过了一天,事件仍会显示它是否被选为特色事件。

$today = date("Y-m-d");
$args=array(
 'post_type' => 'event',
 'post_status' => 'publish',
 'posts_per_page' => 1,
 'order' => 'ASC',
 'orderby' => 'meta_value',
 'meta_query' => array(
       'relation' => 'OR',
          array(
            'key' => 'feature_event',
            'value' => 'yes',
            'compare' => 'LIKE'
        ),
        array(
            'key' => 'event_date',
            'meta-value' => $value,
            'value' => $today,
            'compare' => '>=',
            'type' => 'datetime'
        )
  )
); 

有人能告诉我合并这两个查询的正确方法吗?

1 个答案:

答案 0 :(得分:1)

亲自尝试.....只需在最终代码中使用“和”代替“或”,并在那里放置条件。

e.g。

'meta_query' => array(
   'relation' => 'AND',
      array(
        'key' => 'feature_event',
        'value' => 'yes',
        'compare' => 'LIKE'
    ),
    array(
        'key' => 'event_date',
        'meta-value' => $value,
        'value' => $today,
        'compare' => '>=',
        'type' => 'datetime'
    ),
    array(
    'key'=>'blah',
    etc
    )