我正在尝试根据2个自定义meta\\u键的值查询我的帖子。。。
“\\u mdjm\\u event\\u date”格式为Y-M-D(2015-05-13)“\\u mdjm\\u event\\u finish”格式为H:i:s(23:35:00)
这是我的问题。。。
$args = array(
\'posts_per_page\' => -1,
\'post_type\' => MDJM_EVENT_POSTS,
\'post_status\' => \'mdjm-approved\',
\'meta_key\' => \'_mdjm_event_date\',
\'meta_value\' => date( \'Y-m-d\' ),
\'meta_compare\' => \'<=\',
\'meta_type\' => \'date\',
\'meta_query\' => array(
\'relation\' => \'AND\',
array(
\'key\' => \'_mdjm_event_finish\',
\'value\' => date( \'H:i:s\' ),
\'compare\' => \'>\',
\'type\' => \'numeric\',
),
),
);
我想返回的是所有事件日期早于或等于今天的帖子。如果事件日期是今天,则完成时间应小于当前时间,但上面的代码没有提供所需的结果。我有8项活动符合标准,但我只得到2项。
感谢您的帮助
谢谢
SO网友:s_ha_dum
您将旧的元语法与新的元语法混合在一起。我建议您将其清理干净,以便于将来的可读性和潜在兼容性。(不过WordPress似乎能正确解析混合查询)
$args = array(
\'posts_per_page\' => -1,
\'post_type\' => MDJM_EVENT_POSTS,
\'post_status\' => \'mdjm-approved\',
\'meta_query\' => array(
\'relation\' => \'AND\',
array(
\'key\' => \'_mdjm_event_date\',
\'value\' => date( \'H:i:s\' ),
\'compare\' => \'<=\',
),
array(
\'key\' => \'_mdjm_event_finish\',
\'value\' => date( \'H:i:s\' ),
\'compare\' => \'>\'
),
),
);
我更改的另一件事是将日期值的类型转换为数字。我很确定这是在搞错你的问题。如果你跑步
SELECT CAST(\'23:20:36\' as signed)
在MySQL控制台(PHPAdmin、命令行等)中,您将看到仅在“23”中返回的内容。这是不匹配的。