我正在使用高级自定义字段为帖子分配自定义字段。 然后,过滤系统使用此字段使用自定义查询过滤帖子(通过 pre_get_posts 操作)。其他查询参数工作正常,除了依赖于ACF字段的那个。
字段的 meta_query 的当前查询参数是根据字段的ACF documentation构造的(因此围绕值的引号)。
有人可以告诉我哪里出了问题吗?查询似乎没有根据我传递给查询的值返回任何帖子。
查询参数:
$courses = get_query_var('courses');
if ($courses) {
$query->set('meta_query', array(
array(
'key' => 'course_check',
'value' => '"'.$courses.'"', //i.e mdia-403
'compare' => 'LIKE'
),
)
);
}
答案 0 :(得分:0)
ACF将复选框值存储在数组中,这就是您的代码无法正常工作的原因。
请参阅此处的工作示例: https://support.advancedcustomfields.com/forums/topic/wp_query-using-meta_query-for-an-acf-checkbox-field/
答案 1 :(得分:0)
通过print_r整个查询并检查实际发生的情况找到了这个问题的原因 - 多次这样做了,但忽略了以下细节:
这里的问题实际上不是由于复选框meta_query,而是get_query_var术语('courses')和自定义分类法之间的冲突,其slug也是'courses'。
执行查询时,查询似乎在查询与自定义分类和选定复选框值相关联的帖子,但不会产生任何结果。
将名称attr重命名为课程以外的其他内容,然后重新配置已注册的查询var和meta_query修复此问题。