Как мне получить всех пользователей с их метаданными? - PullRequest
0 голосов
/ 17 июня 2019

Я создаю веб-сайт, который имеет около 7500 пользователей.Я хотел собрать всех своих пользователей и их метаданные и вернуть их мне через API-интерфейс rest rest, который я создал сам.В настоящее время мне трудно вернуть метаданные всех наших пользователей, а не только метаданные одного пользователя.

Я уже создал пользовательскую конечную точку и могу успешно вернуть пользователей

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;
}

1 Ответ

1 голос
/ 17 июня 2019

Вы используете return в вашем цикле, поэтому он вернется на первой итерации.

Просто создайте переменную для хранения мета:

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;
}
...