En esta serie, hemos analizado cómo se puede usar WordPress para desarrollar aplicaciones web de forma muy similar a una serie de marcos diferentes y otras herramientas disponibles..
Comenzando en el último artículo, comenzamos a ver las diferentes opciones que tenemos relacionadas con la consulta de los datos de WordPress. Primero, revisamos WP_Query
.
En este artículo, continuaremos observando las opciones disponibles para recuperar información de la base de datos observando WP_User_Query
después de lo cual nos centraremos en cómo podemos ejecutar consultas directas de SQL en la base de datos.
Pero por ahora, echemos un vistazo a lo que WordPress nos ofrece en la forma de administrar a nuestros usuarios, su información y sus metadatos asociados..
Antes de comenzar a analizar la API real, revisemos rápidamente parte de la información sobre la base de datos de WordPress, de modo que hayamos establecido un nivel común de información con el cual trabajar para el resto del artículo, la API y los ejemplos que utilizamos. estaré cubriendo.
En el último artículo, mencionamos tres puntos específicos:
Cuando nos cubrimos WP_Query
, revisamos cómo se puede usar para recuperar publicaciones, páginas, tipos de publicaciones personalizadas, taxonomías relacionadas, categorías, términos, etc..
similar, WP_User_Query
Ofrece gran parte de la misma funcionalidad pero dentro del contexto de los usuarios. El Codex define la consulta:
WP_User_Query es una clase, ..., que permite consultar las tablas de la base de datos de WordPress 'wp_users' y 'wp_usermeta'.
A diferencia de la definición inicial de WP_Query
, Esto es menos técnico y relativamente fácil de entender. especialmente si estás familiarizado con el wp_users
mesa y el wp_usermetadata
mesas.
Pero si no lo está, no es gran cosa: vamos a cubrir todo lo que se necesita no solo para comprender las tablas, sino también para entender la API..
los wp_users
mesa y el wp_usermetadata
Las tablas son responsables de almacenar los datos del usuario..
La información para cada una de las tablas está disponible en el Codex (que puede encontrar aquí y aquí), y recomiendo que todos la revisen; sin embargo, la información sobre cada tabla se puede simplificar de la siguiente manera:
Para ver esto en acción, puede echar un vistazo a cualquier información de la tabla de la base de datos de WordPress, y encontrará que aquí es donde información como la Nombre, Apellido, Capacidades, y así.
Lo bueno es que si está creando una aplicación, entonces la tabla meta proporciona mucha flexibilidad en cuanto a la cantidad de información que realmente puede asociar con cualquiera de sus usuarios..
En primer lugar, tenga en cuenta que configurar una consulta de usuario es muy parecido a configurar una consulta de usuario. WP_Query
. Con eso, quiero decir que tomas una instancia de la clase al pasar una matriz de argumentos al constructor.
Ahora, en lo que respecta a los argumentos, se puede especificar cualquier cosa que esté contenida en las tablas de base de datos asociadas. Por ejemplo, puedes buscar usando:
Pero hay más que eso. También puede especificar parámetros relacionados con los metadatos para que pueda consultar a varios usuarios, por ejemplo, en función de su función y una recopilación de metainformación del usuario..
Vamos a echar un vistazo a esto un poco más en detalle momentáneamente, pero también vale la pena señalar que puede construir consultas aún más avanzadas que se ocupan de incluir metadatos de usuario, excluyendo metadatos de usuario, cómo y desea ordenar los datos. Datos (por ejemplo, por nombre de usuario ascendente), e incluso parámetros de paginación para que podamos hojear los registros de los usuarios con facilidad..
Por supuesto, ¿de qué sirve hablar de una API sin mirar realmente cómo usarla? En el siguiente ejemplo, vamos a tomar un ejemplo de cuentas de usuario y luego iteraremos en la consulta hasta que hayamos construido una que intente demostrar una variedad de características que proporciona.
Dicho esto, digamos que queremos lograr lo siguiente:
Entonces empecemos. Recuerde, vamos a construir esta consulta línea por línea, por lo que debería ser relativamente fácil de entender a medida que continúa evolucionando..
Si, en algún momento, tiene preguntas sobre lo que está pasando, no dude en escribirlas en los comentarios..
Primero, queremos especificar que queremos incluir a todos los administradores:
$ args = array ('role' => 'Administrator'); $ user_query = new WP_User_Query ($ args);
Después de eso, queremos asegurarnos de que tengan su primer nombre y el último nombre especificado. Dado que esa información se almacena en la tabla de metadatos, necesitaremos los parámetros de usuario para la meta consulta..
Específicamente, le pediremos que recupere a todos los administradores que tienen un nombre que se especifica (o, más bien, que no está vacío).
$ args = array ('role' => 'Administrator', 'meta_query' => array ('meta_key' => 'first_name', 'meta_value' => "meta_compare '=>'! = ')); $ user_query = nuevo WP_User_Query ($ args);
A continuación, vamos a ordenar los resultados por fecha de registro de los administradores en orden ascendente:
$ args = array ('role' => 'Administrator', 'meta_query' => array ('meta_key' => 'first_name', 'meta_value' => "meta_compare '=>'! = ')' orderby '=> 'registrado', 'orden' => 'ASC'); $ user_query = new WP_User_Query ($ args);
Y, por último, diremos que queremos retirar cinco registros a la vez:
// El número de registros que se mostrarán en una página $ display_count = 5; // Necesitamos obtener el número de la página actual en la que estamos. // Esto es útil para calcular el desplazamiento correcto $ page = get_query_var ('paginado')? get_query_var ('paginado'): 1; // Después de eso, calcule el desplazamiento $ offset = ($ page - 1) * $ display_count; $ args = array ('role' => 'Administrator', 'meta_query' => array ('meta_key' => 'first_name', 'meta_value' => "meta_compare '=>'! = ')' orderby '=> 'registered', 'order' => 'ASC', 'number' => $ display_count 'offset' => $ offset); $ user_query = new WP_User_Query ($ args);
Y hemos terminado. Ahora es una cuestión de iterar a través de la consulta para generar nuestros resultados. Desafortunadamente, es posible que todos tengamos una opinión diferente sobre cómo queremos hacer esto, así que tenga en cuenta que el bucle que estoy mostrando es solo un ejemplo (frente a la ejemplo):
// Si hay resultados basados en nuestros criterios ... $ results = "; if (! Empty ($ user_query-> results)) // Para cada uno de los resultados, vamos a mostrar el nombre de los administradores para cada ($ user_query-> results como $ usuario) $ resultados. = 'El nombre para mostrar es:'. $ usuario-> nombre_impresión; $ resultados. = '
'; $ resultados. = get_user_meta ($ user-> ID, 'first_name', true); $ resultados. = '
'; // Muestra la información en la pantalla. echo $ resultados;
Y nota: una diferencia de WP_User_Query
versus WP_Query
es que no hay necesidad de restablecer ningún tipo de datos de publicación porque no estamos trabajando con nada más que con un bucle autónomo.
En este punto, la búsqueda surge naturalmente de cuando es una buena idea usar WP_User_Query
, y es probable que obtenga diferentes respuestas de diferentes personas, como una vista previa para usar otros métodos para recuperar su información.
Pero, en general, si voy a recuperar información de la base de datos que se ocupa directamente y estrictamente con los usuarios, entonces uso WP_User_Query
.
Ahora, dado que el conjunto de resultados puede devolverse de una manera que técnicamente se podría fusionar, o al menos volver a trabajar con otro conjunto de datos, definitivamente es posible hacerlo; Sin embargo, personalmente creo que esto requiere un poco de experiencia que puede que no se ajuste a la factura de todos..
En otras palabras, siéntete libre de usarlo como quieras, pero trátalo con cuidado..
Asi que con WP_Query
y WP_User_Query
detrás de nosotros, tenemos una API más en la que podemos buscar para completar nuestra discusión, y esa es la capacidad de consultar directamente la base de datos de WordPress.
En el artículo final que trata las consultas, analizaremos esta API, terminaremos nuestra discusión y luego veremos la revisión final de todo lo que hemos cubierto a lo largo de esta serie..