get_users查询含指定自定义字段用户异常:返回全部用户排查
问题
我拥有一组CPT author_title的ID数组,希望获取自定义字段author_title值属于该数组的用户列表。经数据库直接核查,仅部分用户存在该自定义字段,但使用以下代码调用get_users时,返回的却是全部用户而非预期的测试用户,请问代码存在什么问题?
代码如下:
$args = array( 'meta_query' => array( 'key' => 'author_title', 'value' => $post_IDs, 'compare' => 'IN' ) ); $authors = get_users( $args );
问题原因与修复方案
- 核心问题:你的
meta_query格式错误。WordPress的meta_query要求传入二维数组,每个查询条件是独立的数组元素,你直接把单条条件作为一维数组传入,会导致WordPress忽略元查询条件,直接返回所有用户。 - 额外优化:如果要确保只返回确实存在
author_title字段的用户,可添加'compare' => 'EXISTS'的逻辑,避免匹配到无该字段的用户。
修正后的基础版代码:
$args = array( 'meta_query' => array( array( 'key' => 'author_title', 'value' => $post_IDs, 'compare' => 'IN' ) ) ); $authors = get_users( $args );
严格过滤无该字段用户的进阶版代码:
$args = array( 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'author_title', 'compare' => 'EXISTS' ), array( 'key' => 'author_title', 'value' => $post_IDs, 'compare' => 'IN' ) ) ); $authors = get_users( $args );
内容的提问来源于stack exchange,提问作者Hung Pham
相关产品推荐
相关产品推荐

