WP API REST apenas retornando lista parcial de usuários

4

Começou a trabalhar com a API REST do WP pela primeira vez. Nosso objetivo final é carregar dinamicamente os elementos da interface do usuário com base em qual usuário está logado. No entanto, minhas tentativas de puxar uma lista de todos os usuários estão atingindo uma parede - só posso retornar dois usuários de cinco ao executar a base pedido http:

http://portal.alliedbuildings.com/wp-json/wp/v2/users

Eu tentei incluir outros parâmetros como search , mas isso só funcionará se o usuário que estou procurando for um dos dois na resposta que eu já estou recebendo; Ele não retorna nenhum dado para os outros três usuários. Observando os perfis de usuário, não há pontos de dados ou funções exclusivos que definam os dois usuários sendo retornados separadamente dos outros três. Os dois retornados são ambos administradores, mas um dos três está faltando.

Que diabos estou perdendo?

    
por MakeCodeNotWar 17.04.2018 / 19:46

2 respostas

0

Depois de muita leitura, descobri a razão pela qual todos os usuários não são retornados com a solicitação HTTP direta para a API WP REST:

Esta é uma solicitação não autenticada , portanto, apenas os dados dos usuários disponíveis publicamente são liberados em uma solicitação GET.

*** É importante mencionar que, se alguns dados que você precisa não estiverem disponíveis, você provavelmente precisará adicionar esses campos às respostas, usando register_api_fields ( veja documentos, por exemplo, uso ), para seus terminais de usuário também.

O melhor recurso que encontrei, que me deu essa resposta, foi parte do guia detalhado e fácil de ler sobre o API WP REST da Torque (consulte as páginas 35 a 38) . Alguém precisa comprar aquele homem muitas e muitas cervejas por escrever um guia tão bom !!

    
por MakeCodeNotWar 19.04.2018 / 00:17
3

Eu acho que depende dos detalhes sobre o que você está procurando, você pode ganhar o maior controle, tornando o seu próprio caminho mais difícil, a rota dos usuários é mais destinada a listar usuários, não exatamente pesquisá-los, quantidade de coisas que você pode querer pesquisar com base em, e fazer isso através de todos os parâmetros pode ficar difícil.

Não estou dizendo que isso não pode ser feito. Acabei de descobrir pessoalmente que, em vez de lutar para obter uma rota para seguir seu caso de uso, é mais fácil criar rotas personalizadas.

Aqui está um exemplo:

// namespace is like app/v1 rather then wp/v2
register_rest_route($namespace, '/users', array(
    'methods'             => WP_REST_Server::READABLE,
    'callback'            => 'get_user_list',
    'show_in_rest' => true
));

depois para a função get_user_list

function get_user_list($request) {
   //below you can change to a WQ_Query and customized it to ensure the list is exactly what you need
   $results = get_users();

   //Using the default controller to ensure the response follows the same structure as the default route
   $users = array();
   $controller = new WP_REST_Users_Controller();
   foreach ( $results as $user ) {
        $data    = $controller->prepare_item_for_response( $user, $request );
        $users[] = $controller->prepare_response_for_collection( $data );
    }

   return rest_ensure_response( $users );
}

Claro que há mais também (como paginação).

enlace mostrará como ele constrói a rota padrão através da função get_items . Dependendo do que você deseja consultar, ele também pode informar as opções que você precisa consultar (se estiver usando a rota padrão).

A única razão pela qual estou dando uma resposta tão complicada como poderia ajudá-lo a aprender os detalhes de como funciona e qual aplicativo da API REST pode atender às suas necessidades.

    
por Jordan Ramstad 17.04.2018 / 20:26