Advertisement
  1. Code
  2. WordPress

Argumentos WP_Query: Taxonomías

Scroll to top
Read Time: 8 min
This post is part of a series called Mastering WP_Query.
WP_Query Arguments: Categories and Tags
WP_Query Arguments: Custom Fields

Spanish (Español) translation by Eva Collados Pascual (you can also view the original English article)

Hasta ahora en esta serie, has aprendido cómo está estructurado WP_Query y cuáles son sus propiedades y métodos. Ahora estamos viendo los diversos argumentos que puedes usar con WP_Query y cómo codificarlos.

WP_Query tiene un gran número de posibles argumentos, lo que lo hace extremadamente flexible. Como puedes usarlo para consultar casi cualquier cosa que se encuentre en la tabla wp_posts, tiene argumentos para cada permutación de consulta que desees ejecutar en el contenido.

En este tutorial examinaré los argumentos para consultar términos de taxonomía.

Un resumen sobre cómo funcionan los argumentos en WP_Query

Antes de empezar, vamos a realizar un rápido resumen sobre cómo funcionan los argumentos en WP_Query. Cuando codificas WP_Query en tus temas o plugins, debes incluir cuatro elementos principales:

  • los argumentos para la consulta, utilizando parámetros que se tratarán en este tutorial
  • la consulta en sí
  • el bucle
  • finalizar: cerrando con las etiquetas if y while y restableciendo los datos de la entrada

En la práctica esto tendrá un aspecto similar a lo siguiente:

Los argumentos son lo que le indica a WordPress qué datos obtener de la base de datos y es de lo que trataré aquí. Así que todo en lo que nos estamos centrando aquí es en la primera parte del código:

Como puedes ver, los argumentos están contenidos en una matriz. Aprenderás a codificarlos a medida que avances en este tutorial.

Codificar tus argumentos

Hay una manera concreta de codificar los argumentos en la matriz, es la siguiente:

Debes incluir los parámetros y sus valores entre comillas simples, utilizar el valor => entre ellos y separarlos mediante una coma. Si te equivocas, es posible que WordPress no añada todos tus argumentos a la consulta o que obtengas una pantalla blanca.

Los parámetros de taxonomía

Establecer parámetros para los términos de taxonomía es un poco más complicado que hacerlo para categorías y etiquetas, ya que utiliza tax_query. Dentro de este argumento se escribe una matriz anidada de argumentos para especificar la taxonomía y el término utilizando estos parámetros:

  • taxonomy (cadena): Taxonomía.
  • field (cadena): Selecciona el término de taxonomía por 'term_id' (predeterminado), 'name' o 'slug').
  • terms (int/string/array): Términos de taxonomía(s).
  • include_children (booleano): Si se incluyen o no taxonomías hijas para taxonomías jerárquicas. El valor predeterminado es true.
  • operator (cadena): Operador para testear. Los valores posibles son 'IN' (predeterminado), 'NOT IN', 'AND'.

El hecho de que tengas el parámetro operator significa que no necesitas elegir uno de entre un rango de argumentos disponibles para definir si estás incluyendo o excluyendo términos (como lo haces para las etiquetas y las categorías), pero usa tax_query en su lugar para todo lo relacionado con la taxonomía.

Si deseas consultar varias taxonomías, también puedes utilizar el parámetro relation antes de todas tus matrices (uno por cada taxonomía) con AND u OR para especificar si deseas buscar entradas con todos los términos o con cualquiera de ellos.

Esto se explica más fácilmente con algunos ejemplos.

Consultar un término de taxonomía

Este es el escenario más simple e implica simplemente el uso de una matriz anidada:

Las anteriores consultas para las entradas con el término my-term-slug en la taxonomía my-taxonomy. Ten en cuenta que también debes usar el parámetro field para identificar qué campo estás utilizando para identificar el término, a menos que estés utilizando el ID del término que lo predeterminado. Si deseas utilizar el ID del término, usarías algo como esto:

El uso del ID hace que en el futuro te resulte más difícil identificar lo que tu consulta está buscando, pero evita cualquier problema potencial si crees que los usuarios van a editar los slugs del término.

Consultar varios términos en una taxonomía

Si deseas identificar entradas con uno o varios términos de una matriz en la misma taxonomía, todavía escribes una matriz anidada, pero añades una matriz de términos.

Por ejemplo, para consultar entradas con cualquiera de una lista de IDs de términos de la taxonomía, utiliza lo siguiente

Pero, ¿qué pasa si deseas consultar entradas con todos estos términos? Tendrás que utilizar el parámetro operator dentro de la matriz anidada:

Ten en cuenta que el primer ejemplo usa realmente el operador IN para buscar entradas con cualquiera de los términos, pero como este es el valor predeterminado, no tienes que especificarlo en tus argumentos.

Otro escenario es si deseas consultar entradas que no tengan ninguno de los términos de una matriz en una taxonomía, en ese caso harías esto:

Aquí he reemplazado el operador AND con NOT IN, lo que significa que WordPress encontrará entradas sin ninguno de los términos de la matriz.

Ten en cuenta que si prefieres usar slugs en lugar de los IDs de término, puedes hacerlo en cualquiera de estos escenarios. El último ejemplo tendría este aspecto:

Otro escenario es si deseas consultar entradas que tengan un término pero no otro. Esto utiliza el operador IN (que no necesitas incluir ya que es el valor predeterminado), con un signo menos antes del identificador de los términos que desea excluir:

Esto consulta las entradas con el término 11 pero que no tengan el término 12.

Consultar términos de varias taxonomías

Si deseas trabajar con más de una taxonomía, deberás crear más de una matriz. Echemos un vistazo al ejemplo más sencillo, para consultar entradas con un término la taxonomía1 y un término de la taxonomía2:

Aquí he escrito dos matrices anidadas: una para cada taxonomía, usando los mismos argumentos que utilicé para los ejemplos que usaban solo una taxonomía. He precedido estos con el argumento relation. Debes incluir el argumento relation para decirle a WordPress si estás buscando todas o algunas de las entradas que extrae cada matriz. Esto funciona de la siguiente manera:

  • Si utilizas 'relation' => 'AND', WordPress recuperará las entradas especificadas en la primera matriz y la segunda matriz. Por lo tanto, en el ejemplo anterior, solo se consultarán las entradas tanto con el slug slug-one en taxonomía1 y el slug slug-two en taxonomía2.
  • Si utilizas 'relation' => 'OR', WordPress recuperará las entradas extraídas por la primera o la segunda matriz. Así que en este caso obtendrás entradas que bien tengan el slug slug-one o el slug slug-two (o ambos).

Este es el código que usarías si estuvieras buscando entradas con cualquiera de los dos slugs:

También puedes buscar más de un término en una taxonomía determinada añadiéndola a la matriz:

Al combinar el argumento relation con consultas anidadas usando además el argumento operator, puedes crear consultas bastante complejas. Los siguientes argumentos consultarían las entradas con un término de una taxonomía pero sin un término de otra taxonomía:

Ten en cuenta que aquí he utilizado 'relation' => 'AND': si hubiese utilizado OR, habría consultado las entradas con slug-two y las entradas sin slug-one, en lugar de las entradas que tienen el slug slug-two pero no slug-one, que es lo que pretendo.

Es posible que puedas llevar esto más lejos para consultar los términos de las taxonomías como desees: usar el argumento operator en ambas consultas anidadas o añadir una consulta anidada adicional para consultar términos en otra taxonomía.

Nota sobre el argumento tax

Es posible que te preguntes por qué no he incluido el argumento {tax}, donde simplemente escribes tu argumento de la siguiente manera:

Es posible que estés familiarizado con esta forma de consultar taxonomías si lo has hecho en el pasado, pero ahora está en desuso y no deberías usarlo. ¡Así que apégate a 'tax_query'! De todos modos, el uso de tax_query te da mucha más flexibilidad.

Resumen

Consultar taxonomías es un poco más complicado que consultar categorías y etiquetas, ya que necesitas conocer el argumento tax_query.

Sin embargo, como hemos visto, este es un argumento muy potente que te proporciona gran alcance y flexibilidad para consultar tu base de datos de la manera que desees.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.