具有两个后置类型和两个不同元关键字的查询

时间:2016-01-28 作者:buckdanny

我需要查询两种自定义帖子类型,

像这样:

\'post_type\' => array (\'single_events\', \'group_of_events\'),
我需要按照一定的顺序选择某些帖子,为此,我编写了一个元查询来选择存储在自定义字段中的两个日期之间的帖子。

我现在的问题是:对于我的第一个自定义帖子类型,这很好,这些帖子只有“开始日期”字段。

但是对于我的第二个自定义帖子类型,我需要为meta\\u查询使用另一个键,因为这些帖子是具有开始日期和结束日期的事件,

所以我的问题是,如何修改元查询来选择帖子

对于single\\u事件

by meta_key =>\'start_date\'
对于组\\u of\\u事件

by meta_key =>\'end_date\'
目前情况如下:

\'meta_query\' => array(
            \'relation\' => \'AND\',
            \'time\' => array(
                \'key\' => \'start_date\', /// or \'end_date\' for cpt \'group_of_events??
                \'compare\' => \'BETWEEN\',
                \'type\' => \'DATE\',
                \'value\' => array($filter_start_date, $filter_end_date),
                ),
            \'type\' => array(
                \'key\' => \'type\',
                \'compare\' => \'IN\',
                \'value\' => $filter_type,
                ), 
            ),
\'orderby\' => \'time\', 
我可能只需克隆start\\u日期,就可以为single\\u事件提供一个结束日期,但也许有一种更优雅的方法可以做到这一点?

非常感谢!

1 个回复
SO网友:Silenced

你试过这个吗?

 \'meta_query\' => array(
        \'relation\' => \'AND\',
        array(
        \'relation\' => \'OR\',
        array(
            \'key\' => \'start_date\', /// or \'end_date\' for cpt \'group_of_events??
            \'compare\' => \'BETWEEN\',
            \'type\' => \'DATE\',
            \'value\' => array($filter_start_date, $filter_end_date),
            ),
        array(
            \'key\' => \'end_date\', /// or \'end_date\' for cpt \'group_of_events??
            \'compare\' => \'BETWEEN\',
            \'type\' => \'DATE\',
            \'value\' => array($filter_start_date, $filter_end_date),
            ),
        ),
        array(
            \'key\' => \'type\',
            \'compare\' => \'IN\',
            \'value\' => $filter_type,
            ), 
        ),
然后可以将事件的开始日期更改为另一个键。