Hemos estado analizando cómo se puede usar WordPress como base para el desarrollo de aplicaciones, pero una de las cosas que aún no hemos cubierto que ofrece la mayoría de los marcos modernos es cómo consultar la base de datos para recuperar resultados para una vista determinada..
Específicamente, no hemos hablado sobre cómo obtener información de la base de datos e insertarla en nuestras páginas.
Si está familiarizado con otros marcos, es probable que esté familiarizado con un sistema de mapeo relacional de objetos (un ORM).
Para aquellos que no están familiarizados con un ORM, esencialmente, es una pieza de software que se encuentra entre la aplicación y la base de datos, y nos permite recuperar filas y columnas como objetos, tratarlos como tales y luego serializar sus cambios. a la base de datos.
Es realmente genial Sin embargo, WordPress hace no ofrecer esa flexibilidad.
En su lugar, hay un conjunto de API que ofrece que nos permiten realizar cambios en la base de datos. Hay una serie de API disponibles para que las utilicemos, cada una de las cuales exploraremos en este conjunto final de artículos.
En primer lugar, vamos a echar un vistazo a WP_Query
. Entonces, vamos a echar un vistazo a WP_User_Query
, Seguido por el $ wpdb
objeto que está disponible como global
en WordPress.
Pero más sobre eso más adelante. Ahora, a WP_Query
.
Antes de que realmente comencemos a hablar sobre la consulta de la base de datos de WordPress, creo que es fundamental describir exactamente lo que esto significa, por qué es importante y lo que implica..
Si nada más, esto está destinado a establecer niveles de expectativas para los lectores, independientemente de su nivel de experiencia.
Consultar la base de datos de WordPress representa exactamente lo que esperaría: recuperar información de la base de datos en la que se ejecuta WordPress.
No hay nada terriblemente complicado en eso. Sin embargo, hay son Hay varias formas diferentes de hacerlo, y es importante saber cómo hacerlo y qué evitar..
En términos generales, hay tres API disponibles y recomendadas para nuestro uso, y algunas están disponibles, pero están no recomendado para su uso.
En esta serie de artículos, vamos a cubrir todo eso.
En todo caso, esto es importante para que comprendamos las formas adecuadas de recuperar y almacenar información en la base de datos de la manera más segura y más segura posible..
Recuerde: en la programación, solo porque algo funcione no significa que sea la mejor manera de hacerlo..
Con ese fin, vamos a echar un vistazo a las formas recomendadas que WordPress proporciona para recuperar y guardar datos directamente desde y hacia la base de datos..
Después de todo, queremos asegurarnos de que no solo estamos construyendo aplicaciones robustas, sino también aplicaciones seguras y eficientes.
Como con la mayoría de las cosas, implica aprender una API. Al menos, ese es el caso de dos de los tipos de consulta.
Para el artículo final, se requiere que sepa, o que tenga la voluntad de aprender, SQL (como WordPress). hace le permite escribir consultas en bruto en la base de datos). Pero más sobre eso más tarde.
Por ahora, simplemente nos centraremos en las API, los parámetros disponibles y cómo y cuándo usarlos en nuestro trabajo..
Aunque puedes leer todo sobre WP_Query
En el Códice de WordPress, creo que vale la pena extraer algunos de los puntos más detallados aquí en este artículo., especialmente Si eres nuevo en WordPress, o estás considerando seriamente escribir aplicaciones usando WordPress.
El Codex define WP_Query
como el seguiente:
WP_Query es una clase ... que trata las complejidades de una solicitud de publicaciones (o páginas) a un blog de WordPress. Wp-blog-header.php ... proporciona la información del objeto $ wp_query que define la solicitud actual, y luego $ wp_query determina con qué tipo de consulta está tratando (posiblemente un archivo de categoría, archivo con fecha, fuente o búsqueda), y busca el Mensajes solicitados. Conserva una gran cantidad de información sobre la solicitud, que se puede extraer en una fecha posterior.
Increíblemente técnico, a la derecha.?
Aquí es cómo pensar desde la perspectiva de un consumidor:
WP_Query
recupera información sobre publicaciones, páginas, otros tipos de publicaciones personalizadas y datos archivados, y pone a disposición la información solicitada sobre esos datos.Desde una perspectiva de desarrollo, piénsalo así:
WP_Query
es una forma de recuperar información sobre tipos de publicaciones y datos archivados, así como sus metadatos asociados, y más. La información que se recupera se puede leer, manipular, guardar y / o mostrar en los archivos de plantilla..En breve, WP_Query
nos proporciona una manera estándar de consultar la base de datos específicamente sobre publicaciones, páginas, tipos de publicaciones personalizadas y sus metadatos asociados para que podamos trabajar más fácilmente con la información que almacena WordPress..
Nota: Si está buscando información sobre cómo administrar usuarios o escribir consultas SQL personalizadas, espere hasta el próximo conjunto de artículos, ya que cubriremos esa información con más detalle en ese momento..
Está bien, así que hemos cubierto qué WP_Query
es, por qué es beneficioso, y cómo debe usarse, pero eso solo va hasta ahora.
En este punto, es hora de echar un vistazo a qué parámetros se pueden pasar a WP_Query
Y algunos ejemplos prácticos de cómo usarlo..
primero, WP_Query
puede tomar argumentos para: Autores, Categorías, Etiquetas, Taxonomías, Consultas de búsqueda genéricas, Publicaciones, Páginas, Tipos de publicaciones personalizadas, Estado, Paginación, Orden de registro, Fechas, Campos personalizados, Permisos, almacenamiento en caché y Campos de devolución.
En resumen, se puede recuperar casi cualquier cosa relacionada con los tipos de publicación, las etiquetas de sus categorías y sus metadatos. WP_Query
.
Si ha mirado algún código de tema de WordPress, o ha trabajado con WordPress en cualquier capacidad antes de leer este artículo, es muy probable que haya visto un código como este:
Y, en WordPress, esto es lo que se conoce como The Loop.
En resumen, The Loop es donde todo sucede en relación con la visualización de la información recuperada de una consulta..
Para ello, si estás escribiendo una consulta usando
WP_Query
, entonces es probable que vayas a utilizar esta misma estructura para tu propio trabajo.Pero veremos más sobre eso en un momento..
Ejemplos prácticos
Empezar con
WP_Query
es fácil. Por ejemplo, digamos que queremos configurar una plantilla que muestre todas las publicaciones de un solo autor.Para ello, podemos utilizar la identificación del autor. Entonces, digamos que queremos recuperar todas las publicaciones, páginas y contenido escritos por el autor con el ID de '1'.
1); $ my_query = new WP_Query ($ args);Y luego queremos recorrerlo:
if ($ my_query-> have_posts ()) while ($ my_query-> have_posts ()) // Trabajar con la publicación del Autor 1 // Hablaremos sobre esta próxima línea más adelante en el artículo wp_reset_postdata ();Bastante fácil, cierto?
Pero vamos a hacerlo un poco más complicado. Digamos que solo queremos recuperar las publicaciones de ese autor que se incluyen en el tipo de publicación personalizada "Fotografía" y que se publicaron en 2013.
Para hacer eso, pasaríamos esta información:
1 'post_type' => 'fotografía "date_query' => array ('2013')); $ my_query = new WP_Query ($ args);Y luego iterar a través de la consulta como esta:
if ($ my_query-> have_posts ()) while ($ my_query-> have_posts ()) // Trabajar con las publicaciones devueltas // Hablaremos sobre esto en la próxima línea más adelante en el artículo wp_reset_postdata ();Pero puede volverse un poco más complejo dependiendo de la información que tengamos en cualquier momento durante el ciclo de vida de la aplicación..
Por ejemplo, digamos que queremos crear mediante programación un tipo de publicación personalizado con un título y un slug específicos, pero solamente si uno no existe ya.
Hay tres pasos para hacer esto:
- Pasar los argumentos necesarios a la clase.
- Corre por The Loop buscando cualquier publicación que pueda existir.
- Si la publicación no existe, créala.
Aquí está cómo hacer eso:
// Busque el tipo de publicación y el slug especificados que están publicados o en la papelera $ args = array ('post_type' => $ post_type, 'post_name' => $ slug, 'post_status' => array ('publish', 'basura')); $ post_type_query = new WP_Query ($ args); // Ya existe una publicación con esa información, luego retírela de la basura si ($ post_type_query-> have_posts ()) while ($ post_type_query-> have_posts ()) $ post_type_query-> the_post (); // Si la publicación se encuentra en la papelera, restaúrela si ('trash' == strtolower (get_post_status (get_the_ID ()))) $ page = get_page (get_the_ID ()); $ page-> post_status = 'publish'; wp_update_post ($ page); // Si no existe una publicación con el título especificado, créela si (null == acme_get_permalink_by_slug ($ slug, $ post_type)) $ page_id = wp_insert_post (array ('comment_status' => 'closed' , 'ping_status' => 'closed', 'post_author' => 1, // Administrator está creando la página 'post_title' => $ title, 'post_name' => strtolower ($ slug), 'post_status' => 'publicar ',' post_type '=> strtolower ($ post_type))); // Si se especifica una plantilla en los argumentos de la función, apliquémosla si (null! = $ Template) update_post_meta (get_the_ID (), '_wp_page_template', $ template); // Hablaremos sobre esta línea más adelante en el artículo wp_reset_postdata ();Como puede ver, puede hacer algunas consultas realmente poderosas y hacer un trabajo realmente inteligente con WordPress y
WP_Query
Si sabes manejar los parámetros correctamente..Ahora, en el código anterior, cuando buscamos encontrar si la publicación ya existe en la basura, hay son formas más óptimas de escribir una consulta para verificar eso; Sin embargo, el código anterior está destinado a demostrar más de un ejemplo de cómo hacerlo usando
WP_Query
que cualquier otra cosa.A medida que nos adentramos en este tema de la redacción de consultas, veremos otras formas de recuperar información más rápidamente (como el uso de SQL sin formato para
SELECCIONAR
declaraciones yBORRAR
oACTUALIZAR
declaraciones).Para ello, recomiendo encarecidamente que se familiarice con todos los parámetros que acepta. Aunque hay muchas opciones (lo cual es una buena cosa, en mi opinión), hay una manera relativamente estándar de pasarlas de tal manera que muchas de ellas funcionan de la misma manera que otras..
Es decir, una vez que aprendes algunos de ellos, es fácil recoger el resto..
Además, si realmente entiendes un poco más las consultas, recomiendo echar un vistazo a cómo se corresponden los parámetros con los datos en la base de datos subyacente..
Cuándo usar WP_Query
Por supuesto, esto plantea la cuestión de cuando deberías estar usando
WP_Query.
Después de todo, WordPress tiene su propia jerarquía de plantillas, por lo que si está trabajando con un archivo que se ajusta a dicha jerarquía, automáticamente utilizará una consulta relacionada con ese tipo de plantilla..
Pero las aplicaciones de escritura, o incluso los temas avanzados de WordPress, harán que cree plantillas que no encajen en la jerarquía y, por lo tanto, necesiten su propio conjunto de consultas..
Esa es una forma en la que necesitarás usar
WP_Query
.En segundo lugar, si está buscando retirar un conjunto personalizado de información, ya sea una pieza o varias piezas, para una publicación, página, tipo de publicación personalizada, categoría, taxonomía, etc.
WP_Query
Podría decirse que es tu mejor opción.Una palabra acerca de restablecer la consulta
Hay uno grande tengo que usar
WP_Query
eso es clave para redondear su comprensión de la API y eso eswp_reset_postdata ()
.Así como el Codex describe:
Utilice esta función para restaurar la variable global $ post del bucle de consulta principal después de un bucle de consulta secundario utilizando la nueva WP_Query. Restaura la variable $ post a la publicación actual en la consulta principal.
Debido a cómo WordPress mantiene la información usando
global
variables, es crucial que una vez que haya creado, ejecutado y procesado su propioWP_Query
, luego debe llamar a esta función particular para restaurar la información al estado en que se encontraba antes de cuando ejecutó su propia consulta.Esto es para que WordPress continúe en bucle a través de la información según sea necesario en la jerarquía de la plantilla, y para que los datos no se dañen o se pierdan al representar contenido más adelante en una página o en otra página.
Siguiente, WP_User_Query
Si
WP_Query
es tan crucial para elaborar consultas eficientes y seguras para tipos de publicaciones y sus atributos relacionados, ¿cómo hacemos lo mismo para los usuarios??Después de todo, ya hemos establecido que, fuera de la caja, WordPress ofrece fantásticas instalaciones para la administración de cuentas, pero en realidad no hemos discutido las formas en que podemos administrar a los usuarios al consultar la base de datos..
En el siguiente artículo, veremos exactamente eso. Y si estás familiarizado con
WP_Query
- Lo que debería ser después de leer este artículo, encontrará el siguiente artículo muy fácil de seguir..