WordPress get_users指定fields参数返回重复ID字段的疑问
WordPress get_users函数返回重复ID字段的原因分析
在WordPress站点中使用get_users函数获取用户数据时,遇到了一个奇怪的问题:当传入fields参数为数组(比如['id','display_name']或['ID','display_name']),返回结果里会同时出现ID和id两个重复字段;但如果只指定'ID'作为fields参数,只会返回单个ID字段。下面具体分析这个重复问题的成因。
示例代码
// 两种写法表现一致 // $args = array( // 'fields' => array('ID','display_name') // ); $args = array(); $args['fields'] = array('id','display_name'); $users = get_users($args); echo json_encode($users);
返回结果
[{"ID":"1","display_name":"it@hennig.ame.com","id":"1"},{"ID":"7","display_name":"John Brooks","id":"7"},{"ID":"11","display_name":"Josh Green","id":"11"},{"ID":"13","display_name":"Karyn Ross","id":"13"},{"ID":"9","display_name":"Mark Cunningham","id":"9"},{"ID":"6","display_name":"Noah Goellner","id":"6"},{"ID":"14","display_name":"Roderick Hennl","id":"14"},{"ID":"8","display_name":"Randy Olson","id":"8"},{"ID":"12","display_name":"skylar@hennig.ame.com","id":"12"},{"ID":"5","display_name":"Troy Davidson","id":"5"}]
问题成因
这个重复问题的核心在于WordPress对get_users函数fields参数的内部处理逻辑:
- 当
fields传入数组时,get_users会先从数据库查询用户数据,然后通过WP_User对象处理字段的映射和输出。 - 在WordPress用户系统中,
ID是用户对象的原生核心属性(大写形式),id是它的别名。当你在fields数组里传入小写的id时,系统会自动映射到大写ID的取值,但同时保留你传入的小写id作为键名;而WP_User对象本身默认包含ID字段,最终就导致返回结果里同时出现两个键、取值完全相同的情况。 - 当只指定单个
'ID'作为fields参数时,WordPress会直接返回纯值数组(比如[1,7,11,...]),不会生成带键名的关联数组,自然不会出现重复字段。
内容的提问来源于stack exchange,提问作者ProfoundHypnotic
相关产品推荐
相关产品推荐

