Elementor中ACF双日期字段区间查询无结果问题排查
可能的问题及解决办法
未将修改后的meta_query应用到查询对象
你修改了$meta_query变量,但最后没有调用$query->set('meta_query', $meta_query),导致筛选条件根本没生效。解决办法是在代码末尾添加这行:$query->set( 'meta_query', $meta_query );日期格式不匹配
ACF字段存储的是Ymd格式(如20240520),但你用date('Y-m-d')生成了带横杠的日期(如2024-05-20),同时设置了type => 'DATE',MySQL会按标准日期格式解析,和实际存储的格式不匹配,导致无法匹配数据。
解决办法:把value改成和ACF一致的格式,同时可去掉type参数(Ymd格式的字符串比较逻辑和日期比较一致):array( 'key' => 'start_date', 'value' => date('Ymd'), 'compare' => '<=' ), array( 'key' => 'end_date', 'value' => date('Ymd'), 'compare' => '>=' )meta_query结构错误
你当前把包含relation的数组作为元素添加到$meta_query中,导致最终结构变成[[ 'relation' => 'AND', ... ]],不符合WP_Query的格式要求。正确做法是:
若原$meta_query为空,直接赋值完整结构:$meta_query = [ 'relation' => 'AND', array( 'key' => 'start_date', 'value' => date('Ymd'), 'compare' => '<=' ), array( 'key' => 'end_date', 'value' => date('Ymd'), 'compare' => '>=' ) ];时区不一致导致日期偏差
PHP的date()用的是服务器时区,和WordPress后台设置的时区可能不一致,导致查询日期不是网站当前日期。改用WordPress内置函数:current_time('Ymd')ACF字段键名拼写错误
确认start_date和end_date完全匹配ACF后台创建的字段键名,注意大小写、下划线等细节,键名错误会导致无法找到对应元数据。
内容的提问来源于stack exchange,提问作者JimboNeutronbo
相关产品推荐
相关产品推荐

