更新 - 已解决
好的,我有三种自定义帖子类型'课程','模块'和'结果'。 这些帖子类型设置有许多ACF(高级自定义字段)。
我正在尝试使用'meta_query'基于他们的ACF查询'结果'CPT。
我想要查询的两个ACF字段是'module'和'user'。
我似乎只得到一个空数组。我看过https://www.advancedcustomfields.com/resources/query-posts-custom-fields/#custom-field%20parameters上的例子仍然没有运气。
function check_results_for_user( $module_id, $user_id ){
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => 'results',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'module',
'value' => $module_id,
'compare' => '=',
),
array(
'key' => 'user',
'value' => $user_id,
'compare' => '=',
),
),
));
return $posts;
}
通话功能:
print_r(check_results_for_user($post->ID, $currentUserID ));
结果:
Array ( )
更新 - 解决:
好的,所以设法搞清楚了。是由于'module'关系字段将其数据保存为序列化数组:a:1:{i:0;s:1:"9";}
所以你必须将比较改为'LIKE'并将值包装在“
中function check_results_for_user( $module_id, $user_id ){
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => 'results',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'module',
'value' => '"'.$module_id.'"',
'compare' => 'LIKE',
),
array(
'key' => 'user',
'value' => $user_id,
'compare' => '=',
),
),
));
return $posts;
}
请参阅本页末尾:https://www.advancedcustomfields.com/resources/querying-relationship-fields/
答案 0 :(得分:1)
更新 - 解决:
好的,所以设法搞清楚了。是由于'module'关系字段将其数据保存为序列化数组:a:1:{i:0;s:1:"9";}
所以你必须将比较改为'LIKE'并将值包装在“
中function check_results_for_user( $module_id, $user_id ){
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => 'results',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'module',
'value' => '"'.$module_id.'"',
'compare' => 'LIKE',
),
array(
'key' => 'user',
'value' => $user_id,
'compare' => '=',
),
),
));
return $posts;
}
请参阅本页末尾:https://www.advancedcustomfields.com/resources/querying-relationship-fields/