Spanish (Español) translation by Eva Collados Pascual (you can also view the original English article)
En los últimos años, se ha escrito mucho sobre las mejoras en la interfaz de WordPress: se ha hablado sobre todo de los cambios en la experiencia de escritura.
Pero si eres un desarrollador querrás saber menos sobre esto y más sobre qué ha cambiado en la trastienda. Aquí te demostraré uno de los cambios más interesantes para los desarrolladores: las mejoras en ciertos tipos de consultas.
Los cambios principales son los siguientes:
- Se añade la compatibilidad con las consultas anidadas para las consultas de los metadatos, fechas, y los términos de taxonomía de las entradas.
- Se han añadido parámetros extra para hacer consultas sobre los comentarios.
- ¡Y también se han solucionado algunos bugs!
Echemos un vistazo a estos cambios.
Consultas anidadas
En versiones anteriores de WordPress, podías usar una declaración AND o OR para definir consultas relacionadas con términos de taxonomía, fechas y metadatos. Por ejemplo, los siguientes argumentos se usarán en una consulta en un sitio sobre recetas que nos devolverá rápidas recetas para el desayuno:
1 |
<?php
|
2 |
|
3 |
$args = array( |
4 |
'post_type' => 'post', |
5 |
'tax_query' => array( |
6 |
'relation' => 'AND', |
7 |
array( |
8 |
'taxonomy' => 'speed', |
9 |
'field' => 'slug', |
10 |
'terms' => array( 'quick' ) |
11 |
),
|
12 |
array( |
13 |
'taxonomy' => 'meal', |
14 |
'field' => 'slug', |
15 |
'terms' => array( 'breakfast' ) |
16 |
)
|
17 |
)
|
18 |
);
|
19 |
|
20 |
$query = new WP_Query( $args ); |
21 |
|
22 |
?>
|
Esto buscará las taxonomías 'speed' y 'meal' y mostrará las entradas con los términos 'quick' y 'breakfast' correspondientes.
¿Pero qué pasaría si quisieses escribir una consulta más compleja? Imagina que quisieses recuperar recetas rápidas para el desayuno y recetas más elaboradas para para el almuerzo (tal vez para alguien que quiere preparar un desayuno rápido de manera que le quede más tiempo para cocinar su almuerzo). No quieres usar una sencilla declaración AND para reunir todos los elementos de tu consulta, ya que de este modo obtendrías recetas elaboradas tanto para el desayuno como para el almuerzo, por ejemplo. Y si no quieres usar una declaración OR para vincular todos los términos, ya que obtendrás todas las recetas que tengan uno de los términos consultados junto con otras que quieres excluir.
Afortunadamente ahora puedes conseguirlo. Para consultar recetas rápidas para el desayuno y recetas elaboradas para el almuerzo usarías lo siguiente:
1 |
<?php
|
2 |
|
3 |
$query = new WP_Query( |
4 |
array( |
5 |
'tax_query' => array( |
6 |
'relation' => 'OR', |
7 |
array( |
8 |
'relation' => 'AND', |
9 |
array( |
10 |
'taxonomy' => 'meal', |
11 |
'field' => 'slug', |
12 |
'terms' => array( 'breakfast' ) |
13 |
),
|
14 |
array( |
15 |
'taxonomy' => 'speed', |
16 |
'field' => 'slug', |
17 |
'terms' => array( 'quick' ) |
18 |
)
|
19 |
),
|
20 |
array( |
21 |
'relation' => 'AND', |
22 |
array( |
23 |
'taxonomy' => 'meal', |
24 |
'field' => 'slug', |
25 |
'terms' => array( 'lunch' ) |
26 |
),
|
27 |
array( |
28 |
'taxonomy' => 'speed', |
29 |
'field' => 'slug', |
30 |
'terms' => array( 'slow' ) |
31 |
|
32 |
)
|
33 |
)
|
34 |
)
|
35 |
)
|
36 |
);
|
37 |
|
38 |
$query = new WP_Query( $args ); |
39 |
|
40 |
?>
|
Aquí he usado dos arrays anidados:
- El array principal usa
OR, porque estamos buscando entradas que o bien son recetas rápidas para el desayuno o recetas para almuerzos. - El primer array anidado busca las entradas de recetas rápidas para el desayuno, usando
ANDporque quieres que la entrada tenga ambos términos. - El segundo array anidado busca recetas elaboradas para los almuerzos, usando de nuevo
AND.
Por supuesto podrías modificar tus consultas para incluir múltiples términos de taxonomía y valores, y tan complejas como necesites.
Aplicar consultas anidadas: Términos de taxonomía, metadatos, y fechas
El ejemplo que acabo de exponer usa términos de taxonomía, pero esta característica también ha sido añadida a las consultas sobre fechas y metadatos. Los metadatos son potencialmente donde las cosas podrían ponerse interesantes, ya que son posibles muchos valores.
La sintaxis funciona exactamente de la misma forma para las fechas y los metadatos. Para las consultas de metadatos sustituyes tax_query con meta_query y usas 'key' y 'value' como parámetros. Para las consultas de fecha sustituirías tax_query con date_query y usarías los parámetros de fecha proporcionados en el Codex de WordPress.
Parámetros de comentarios
Para consultar comentarios, usarías la clase WP_Comment_Query en lugar de la clase habitualmente usada WP_Query. En esta clase se han añadido ocho nuevos parámetros:
-
'author__in': identificará los comentarios de un autor (o los de un array de autores) -
'author__not_in': identificará los comentarios que no han sido realizados por cierto autor (o los autores de un array) -
'post_author__in': identificará al autor (o autores en un array) de la entrada en la que se hizo el comentario -
'post_author__not_in': excluye los comentarios realizados en entradas escritas por un autor concreto o por los autores especificados en un array. -
'comment__in': comentarios con un ID concreto o array de IDs -
'comment__not_in': excluye los comentarios con un cierto ID o con los IDs de un array. -
'post__in': comentarios hechos en una entrada o las entradas especificadas en un array (usando los IDs de las entradas) -
'post__not_in': excluye los comentarios realizados en una entrada o en las entradas indicadas (usando sus IDs)
Los valores usados para estos parámetros son el ID del autor,el ID del comentario o el ID de la entrada, según corresponda.
Advierte que la clase WP_Coment_Query ahora también admite consultas anidadas.
Corrección de errores
También se han solucionado una par de errores que podrías encontrar útiles:
- Se ha solucionado un error que causaba que las consultas fallasen cuando se usaba
date_queryjunto contax_queryometa_query. - Cuando se usaba
'orderby' => 'meta_value’al pasar una consulta'meta_query'con la relaciónORenWP_Query, se rompía la consulta. Esto ha sido solucionado.
Si quieres conocer todos los detalles, puedes consultar toda la información en el sitio dedicado al núcleo de WordPress.
Sumario
Estas mejoras en las consultas llevan una paso más allá a WordPress y expanden las capacidades del CMS. La posibilidad de usar consultas anidadas significa que podrás mostrar contenido de forma mucho más flexible y usar condicionales más complejos. ¡Será interesante descubrir cómo los aprovecha la gente!



