WP REST API solo devuelve una lista parcial de usuarios

4

Comenzó a trabajar con la API REST de WP por primera vez. Nuestro objetivo final es cargar dinámicamente los elementos de la interfaz de usuario según el usuario que haya iniciado sesión actualmente. Sin embargo, mis intentos de obtener una lista de todos los usuarios están llegando a una pared: solo puedo devolver dos de cada cinco usuarios cuando ejecuto la base solicitud http:

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

Intenté incluir otros parámetros como search pero eso solo funcionará si el usuario que estoy buscando es uno de los dos en la respuesta que ya estoy recibiendo; no devuelve ningún dato para los otros tres usuarios en absoluto. En cuanto a los perfiles de usuario, no hay puntos de datos o roles únicos que diferencien a los dos usuarios de los otros tres. Los dos que se devuelven son administradores, pero también lo es uno de los tres que faltan.

¿Qué diablos estoy perdiendo?

    
pregunta MakeCodeNotWar 17.04.2018 - 19:46

2 respuestas

0

Después de leer mucho, encontré la razón por la que no se devuelve a todos los usuarios con la solicitud HTTP directa para la API REST de WP:

Esta es una solicitud no autenticada , por lo tanto, solo los datos de los usuarios disponibles públicamente se publican en una solicitud GET.

*** Es importante mencionar que si algunos datos que necesita no están disponibles, probablemente deba agregar esos campos a las respuestas, usando register_api_fields ( vea documentos, por ejemplo, uso ), también a sus puntos finales de usuario.

El mejor recurso que encontré, que me dio esta respuesta, era parte de la guía detallada y fácil de leer en API REST WP de Torque (consulte las páginas 35-38) . ¡Alguien necesita comprarle a ese hombre muchas, muchas cervezas para escribir una guía tan genial!

    
respondido por el MakeCodeNotWar 19.04.2018 - 00:17
3

Creo que depende de los detalles específicos de lo que buscas, puedes obtener el mayor control haciendo que tu propia ruta sea difícil, la ruta de los usuarios está más diseñada para enumerar a los usuarios, no buscarlos exactamente ya que hay una loca la cantidad de cosas que podría querer buscar en función de, y hacer que todo a través de los parámetros podría ser difícil.

No estoy diciendo que no se pueda hacer, acabo de encontrar personalmente que en lugar de luchar para obtener una ruta para seguir su caso de uso, construir rutas personalizadas es más fácil.

Aquí hay un ejemplo:

// 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
));

luego para la función 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 );
}

Por supuesto que también hay más (como paginación).

enlace le mostrará cómo construye la ruta estándar a través de la función get_items . Dependiendo de lo que desee consultar, también puede indicarle las opciones que necesita consultar (si utiliza la ruta predeterminada).

La única razón por la que ofrezco una respuesta tan complicada es que podría ayudarlo a conocer cómo funciona y qué aplicación de la API REST podría satisfacer sus necesidades.

    
respondido por el Jordan Ramstad 17.04.2018 - 20:26

Lea otras preguntas en las etiquetas