如何使用元数据抓取所有用户?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (6)

我正在建立一个拥有约7500名用户的网站。我想要的是抓住我的所有用户和他们的元数据,然后通过我自己构建的rest api调用将其返回给我。目前,我很难返回所有用户元数据,而不仅仅是单个用户的元数据。

我已经构建了自定义端点,可以成功返回用户

add_action( 'rest_api_init', 'my_register_route' );
function my_register_route() {
    register_rest_route( 'map/v1', 'test', array(
                    'methods' => 'GET',
                    'callback' => 'custom_phrase',
                )
            );
}
function custom_phrase() {
    $users = get_users( array( 'fields' => array( 'ID' ) ) );
foreach($users as $user_id){
        return (get_user_meta ( $user_id->ID));
    }
}

我希望端点将所有用户meta_data和user_data一起返回,而不仅仅是索引中的最终用户。

更新:我觉得我几乎就在那里,但阵列中的每个索引都返回完全相同的信息。更不用说我在某种程度上没有成功获取Active_Memberships值,这是一个数组,然后才到达我。

function custom_phrase($request_data) {
    $parameters = $request_data->get_params();
    $state = $parameters['state'];
    $users = get_users(array(
        'meta_key' => 'active state membership', 
        'meta_value' => $state, 
    ));
    $stack = array();

    foreach($users as $user_id) {
        $user_meta = get_user_meta ($user_id -> ID);
        $obj->display_name = $user_id -> display_name;
        $obj->memberships = $user_meta -> active_memberships;
        array_push($stack, $obj);
    }
    return $stack;
}
提问于
用户回答回答于

您在循环中使用return,因此它将在第一次迭代时返回。

只需创建一个存储meta的变量:

function custom_phrase() {
    $users = get_users( array( 'fields' => array( 'ID' ) ) );
    $data = [];
    foreach($users as $user_id){
        $data []= get_user_meta ( $user_id->ID);
    }

    return $data;
}

扫码关注云+社区

领取腾讯云代金券