Argumentos WP_Query Taxonomías

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

WP_Query Tiene un gran número de argumentos posibles, lo que lo hace extremadamente flexible. Como puede usarlo para consultar casi cualquier cosa que se encuentre en su wp_posts tabla, tiene argumentos para cada permutación de consulta que pueda querer ejecutar en su contenido.

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

Un resumen de cómo funcionan los argumentos en WP_Query

Antes de comenzar, hagamos un resumen rápido sobre cómo funcionan los argumentos en WP_Query. Cuando codificas WP_Query en sus temas o complementos, debe incluir cuatro elementos principales:

  • Los argumentos para la consulta, utilizando los parámetros que se tratarán en este tutorial.
  • la propia consulta
  • el lazo
  • rematando: cerrando Si y mientras etiquetas y restablecimiento de datos de correos

En la práctica esto se parecerá a lo siguiente:

have_posts ()) // Iniciar el bucle sobre los resultados de la consulta. while ($ consulta-> have_posts ()) $ consulta-> the_post (); // Los contenidos de los resultados de la consulta consultados van aquí.  // Restaura los datos originales de la publicación. wp_reset_postdata (); ?>

Los argumentos son lo que le dice a WordPress qué datos obtener de la base de datos y los que cubriré aquí. Así que todo lo que nos estamos enfocando aquí es la primera parte del código:

$ args = array (// Argumentos para su consulta);

Como puede ver, los argumentos están contenidos en una matriz. Aprenderás cómo codificarlos mientras trabajas en este tutorial..

Codificando tus argumentos

Hay una forma específica de codificar los argumentos en la matriz, que es la siguiente:

$ args = array ('parámetro1' => 'valor', 'parámetro2' => 'valor', 'parámetro3' => 'valor');

Debe incluir los parámetros y sus valores entre comillas simples, usar => Entre ellos, y separarlos con una coma. Si se equivoca, es posible que WordPress no agregue todos sus argumentos a la consulta o que obtenga una pantalla en blanco..

Los parámetros de taxonomía

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

  • taxonomia (cuerda): Taxonomía.
  • campo (cuerda): Seleccione el término de taxonomía por'term_id (defecto), 'nombre' o 'babosa').
  • condiciones (int / string / array): Término (s) de taxonomía.
  • include_children (booleano): Si incluir o no niños para taxonomías jerárquicas. Por defecto es verdadero.
  • operador (cuerda): Operador a prueba. Los valores posibles son 'EN' (defecto), 'NO EN', 'Y'.

El hecho de que tengas la operador parámetro significa que no necesita elegir uno de los diversos argumentos disponibles para definir si está incluyendo o excluyendo términos (como lo hace para etiquetas y categorías), pero use tax_query para todo lo relacionado con la taxonomía en su lugar.

Si desea consultar múltiples taxonomías, también puede utilizar el relación parámetro antes de todas sus matrices (una para cada taxonomía) con Y o O para especificar si desea buscar publicaciones con todos los términos o cualquiera de ellos.

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

Consultando por un término de taxonomía

Este es el escenario más simple e implica solo usar una matriz anidada:

$ args = array ('tax_query' => array (array ('taxonomy' => 'my-taxonomy', 'field' => 'slug', 'terms' => 'my-term-slug',))) ;

Las consultas anteriores para los mensajes con el mi-término-babosa término en el mi taxonomía taxonomia Tenga en cuenta que también necesita utilizar el campo parámetro para identificar qué campo está utilizando para identificar el término, a menos que esté usando el término ID, que es el predeterminado. Si quisieras usar el término ID, usarías algo como esto:

$ args = array ('tax_query' => array (array ('taxonomy' => 'my-taxonomy', 'términos' => '11')));

El uso de la identificación hace que sea más difícil para usted identificar lo que su consulta está buscando en una fecha posterior, pero evita cualquier problema potencial si cree que sus usuarios pueden editar el término babosas.

Consultando por varios términos en una taxonomía

Si desea identificar publicaciones con uno o más de una serie de términos en la misma taxonomía, aún puede escribir una matriz anidada, pero agregar una matriz de términos.

Por ejemplo, para consultar mensajes con alguna de una lista de ID de términos de su taxonomía, usted usa:

$ args = array ('tax_query' => array (array ('taxonomy' => 'my-taxonomy', 'términos' => array ('11', '12'))));

Pero que tal si quisieras consultar publicaciones con todos de estos terminos? Tendrá que utilizar el operador parámetro dentro de su matriz anidada:

$ args = array ('tax_query' => array (array ('taxonomy' => 'my-taxonomy', 'términos' => array ('11', '12'), 'operator' => 'AND') ));

Tenga en cuenta que el primer ejemplo realmente utiliza el EN para encontrar publicaciones con cualquiera de los términos, pero como este es el valor predeterminado, no tiene que especificarlo en sus argumentos.

Otro escenario es si desea consultar las publicaciones que no tienen ninguno de una serie de términos en una taxonomía, lo que hace así:

$ args = array ('tax_query' => array (array ('taxonomy' => 'my-taxonomy', 'términos' => array ('11', '12'), 'operator' => 'NOT IN' )));

Aquí he reemplazado el Y operador con NO EN, lo que significa que WordPress encontrará publicaciones sin ninguno de los términos en la matriz.

Tenga en cuenta que si prefiere utilizar slugs en lugar de ID de término, puede hacerlo con cualquiera de estos escenarios. El último ejemplo se vería así:

$ args = array ('tax_query' => array (array ('taxonomy' => 'my-taxonomy', 'field' => 'slug', 'terms' => array ('my-slug', 'your- slug '),' operator '=>' NOT IN ')));

Otro escenario es si desea consultar las publicaciones que tienen un término pero no otro. Esto usa el EN Operador (que no es necesario que incluya ya que es el predeterminado), con un signo menos antes de la identificación de los términos que desea excluir:

$ args = array ('tax_query' => array (array ('taxonomy' => 'my-taxonomy', 'términos' => array ('11', '-12'))));

Esta consulta las publicaciones con el término 11 pero no el término 12.

Consulta de términos de múltiples taxonomías

Si desea trabajar con más de una taxonomía, deberá crear más de una matriz. Veamos el ejemplo más simple, para consultar publicaciones con un término de taxonomy1 y un término de taxonomía2:

$ args = array ('tax_query' => array ('relation' => 'AND', array ('taxonomy' => 'taxonomy1', 'field' => 'slug', 'terms' => array ('slug -one ')), array (' taxonomy '=>' taxonomy2 ',' field '=>' slug ',' términos '=> array (' slug-two '))));

Aquí he escrito dos matrices anidadas: una para cada taxonomía, usando los mismos argumentos que hice para los ejemplos usando solo una taxonomía. He precedido a estos con el relación argumento. Necesitas incluir el relación argumento para decirle a WordPress si está buscando todas o algunas de las publicaciones de cada matriz. Esto funciona de la siguiente manera:

  • Si utiliza 'relación' => 'Y', WordPress buscará las publicaciones especificadas en la primera matriz y la segunda matriz. Así que en el ejemplo anterior, solo las publicaciones con ambos la babosa-uno babosa en taxonomía1 y el babosa dos babosa en taxonomía2 será consultado.
  • Si utiliza 'relación' => 'O', WordPress recuperará las publicaciones de la primera matriz o la segunda matriz. Así que en este caso obtendrás mensajes con ya sea la babosa-uno babosa o la babosa dos babosa (o ambas).

Este es el código que utilizarías si estuvieras buscando publicaciones con alguna de las dos babosas:

$ args = array ('tax_query' => array ('relation' => 'OR', array ('taxonomy' => 'taxonomy1', 'field' => 'slug', 'terms' => array ('slug -one ')), array (' taxonomy '=>' taxonomy2 ',' field '=>' slug ',' términos '=> array (' slug-two '))));

También puede buscar más de un término en una taxonomía dada agregándolo a la matriz:

$ args = array ('tax_query' => array ('relation' => 'OR', array ('taxonomy' => 'taxonomy1', 'field' => 'slug', 'terms' => array ('slug -one ')), array (' taxonomy '=>' taxonomy2 ',' field '=>' slug ',' términos '=> array (' slug-two ',' slug-three '))));

Combinando el relación argumento con consultas anidadas también utilizando el operador argumento, puede crear consultas bastante complejas. Los argumentos a continuación consultan las publicaciones con un término de una taxonomía pero sin un término de otra taxonomía:

$ args = array ('tax_query' => array ('relation' => 'AND', array ('taxonomy' => 'taxonomy1', 'field' => 'slug', 'terms' => array ('slug -one '),' operador '=>' NO EN '), array (' taxonomía '=>' taxonomy2 ',' campo '=>' slug ',' términos '=> array (' slug-two ')) ));

Tenga en cuenta que he usado 'relación' => 'Y' aquí: si la usara O, consultaría mensajes con babosa dos y mensajes sin babosa-uno, en lugar de mensajes que tienen babosa dos pero no babosa-uno, que es lo que busco. 

Posiblemente podría llevar esto más lejos para consultar los términos de sus taxonomías como quisiera: usando el operador argumento en ambas consultas anidadas o agregar una consulta anidada adicional para consultar términos en otra taxonomía.

Una nota sobre el argumento fiscal

Quizás se pregunte por qué no he incluido el impuesto argumento, donde simplemente escribe tu argumento de la siguiente manera:

$ args = array ('taxonomy1' => 'slug-one');

Puede estar familiarizado con esta forma de consultar taxonomías si lo ha hecho en el pasado, pero ahora está en desuso y no debe usarlo. Así que apégate a 'tax_query'! Utilizando tax_query te da mucha más flexibilidad de todos modos.

Resumen

Consultar taxonomías es un poco más complicado que las categorías y las etiquetas, ya que necesita familiarizarse con las tax_query argumento.

Sin embargo, como hemos visto, este es un argumento muy poderoso que le brinda mucho alcance y flexibilidad para consultar su base de datos de la forma que desee..