Query between two meta keys

时间:2012-08-30 作者:Robert

我觉得我已经非常接近这一点了,但查询一直显示为空。基本上,我正在尝试查询两个日期之间的自定义值。如果开始日期小于当前日期且结束日期大于或等于当前日期,则应返回记录:

$args = array(
    \'taxonomy\' => \'exhibition_type\', 
    \'term\' => \'faculty\',
    \'numberposts\' => 10,
    \'post_type\' => \'exhibitions\',
    \'meta_key\' => \'start_date_of_event\',
    \'meta_query\' => array(
        \'relation\' => \'AND\',
            array(
                \'key\' => \'start_date_of_event\',
                \'value\' => $current,
                \'compare\' => \'<\'
            ),
            array(
                \'key\' => \'end_event_date\',
                \'value\' => $current,
                \'compare\' => \'>=\'
            )
        ),
    \'order_by\' => \'meta_value_num\',
    \'order\' => \'ASC\',
    \'paged\' =>  $paged
);
我现在使用的代码不断出现0个结果,我现在陷入了困境。任何帮助都将不胜感激。

2 个回复
最合适的回答,由SO网友:marfarma 整理而成

Update - it may be supported in a meta_query. I need more information - see below.

您不能使用meta\\u查询,它不受支持

Do you have data in meta_data fields? - WordPress查询将排除缺少orderby(或meta\\u查询)字段的帖子。WordPress向SQL查询中添加了一个连接条件,以支持orderby或query字段,即内部连接(仅包含带有连接字段的帖子的连接)

如果存在orderby“内部联接”问题,如果您需要包含可能缺少此字段的帖子,那么您可以filter the join and orderby clauses of the generated SQL

如果仍然没有得到结果,那么查看正在生成的实际SQL将非常有用。添加

<pre><?php echo your_query_object->request; ?></pre> 
以显示它,并将其作为更新添加到问题中。

SO网友:sanchothefat

您是否尝试过为meta\\u查询指定数据的“类型”?我假设您使用的是时间戳,因为我以前写过这个,并且它可以工作。

例如:

$args = array(
    ...
    \'meta_query\' => array(
        \'relation\' => \'AND\',
            array(
                \'key\' => \'start_date_of_event\',
                \'value\' => $current,
                \'compare\' => \'<\',
                \'type\' => \'NUMERIC\'
            ),
            array(
                \'key\' => \'end_event_date\',
                \'value\' => $current,
                \'compare\' => \'>=\',
                \'type\' => \'NUMERIC\'
            )
        ),
    ...
);
如果WP\\u Query支持对不同元数据类型(字符串或数字除外)进行排序,那就太棒了,那么您实际上可以使用适当的日期和日期时间比较:(

结束

相关推荐