You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中get_users()传all_with_meta参数无法获取用户元数据问题

问题根因

你遇到的是WordPress get_users() 方法常见的理解误区:fields 参数传入all_with_meta的作用是返回完整的WP_User实例对象,而非将所有用户元数据预加载到对象的data公开属性中展示。你打印WP_User对象时看不到元数据,不代表无法读取元数据,只是默认不会在data节点下展示而已。

可选解决方案
  • 方案1:指定所需字段手动赋值(你当前在用的方案)
    该方案适合明确知道需要哪些元字段的场景,性能最优,不会查询冗余数据,你的实现是完全可行的:
    foreach ($users as $key => $wp_user_object) {
            $wp_user_object->data->num_colegiado = $wp_user_object->get('num_colegiado');
            $wp_user_object->data->first_name = $wp_user_object->get('first_name');
            $wp_user_object->data->last_name = $wp_user_object->get('last_name');
            $wp_user_object->data->telefono = $wp_user_object->get('telefono');
            $wp_user_object->data->nif = $wp_user_object->get('nif');
    }
    
  • 方案2:批量拉取全部元数据自动赋值
    如果你需要一次性获取该用户全部元数据,不需要逐个指定字段,可以调用get_user_meta()不传第二个参数直接获取所有元数据,批量写入对象:
    foreach ($users as $wp_user_object) {
        // 不传元字段名时返回该用户所有元数据的键值对数组
        $user_all_meta = get_user_meta($wp_user_object->ID);
        foreach ($user_all_meta as $meta_key => $meta_val) {
            // WordPress默认返回单值元数据也会包裹一层数组,这里做兼容处理
            $wp_user_object->data->{$meta_key} = count($meta_val) === 1 ? $meta_val[0] : $meta_val;
        }
    }
    
补充说明

如果查询的用户数量较大,优先使用方案1,只拉取需要的元字段可以有效降低数据库查询压力,避免冗余数据开销。

内容的提问来源于stack exchange,提问作者Carlos Crespo Moreno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:15:02