Wordpress查询中的多个AND关系

时间:2017-11-17 12:50:33

标签: php wordpress

我需要创建一个具有多个AND关系要求的查询。所以我有课程,我需要查询查看自定义字段,并找到2个日期之间的课程(自定义帖子),如果课程是打开的,在一个位置。这个代码我知道为什么当我有一个应该满足查询要求的课程时它什么都不返回。

      $query = array(
            'post_type' => 'courses',
                'meta_query' => array(
                    'relation' => 'AND',
                        array(
                            'key' => 'course_date',
                            'compare' => '>=',
                            'value' => '2017-01-01',
                            'type' => 'DATE'
                        ),
                        array(
                            'key' => 'course_date',
                            'compare' => '<=',
                            'value' => '2017-12-30',
                            'type' => 'DATE'
                        ),
                        array(
                            'key' => 'course_location',
                            'compare' => '=',
                            'value' => 'Leeds',
                        ),
                        array(
                            'key' => 'course_open',
                            'compare' => '=',
                            'value' => false,
                        ),
                ),
        );

我认为这是我构建查询的方式不正确。基本上所有标准都需要满足。

1 个答案:

答案 0 :(得分:0)

基本上你的查询看起来做得很好。它说:

  

在2017-01-01和2017-12-30之间提供所有课程,其中课程地点为利兹,课程未开放。

您确定在数据库中有这样的课程吗?

为什么您的查询可能会失败:

  1. 您是否尝试过没有DATE类型? (虽然这应该是正确的)
  2. course_open value:您是否尝试使用确切的字符串值而不是false
  3. 如果STILL不起作用,请删除查询的单个部分,以找出哪个部分可能不会返回任何结果。

    您也可以手动检查生成的SQL。像这样:

    $posts = new WP_Query($query);
    echo "Last SQL-Query: {$posts->request}";