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..
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:
Si
y mientras
etiquetas y restablecimiento de datos de correosEn 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..
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..
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..
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.
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.
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:
'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.'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.
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.
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..