Argumentos WP_Query Categorías y Etiquetas

En las partes anteriores de esta serie, has aprendido cómo WP_Query Está estructurado y cuáles son sus propiedades y métodos. La siguiente etapa es comprender los diversos argumentos que puede usar con ella y la mejor manera de hacerlo..

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é dos tipos de argumentos, para lo siguiente:

  • categorías
  • etiquetas

Los argumentos para estas dos taxonomías son similares, pero tienen algunas diferencias que debe saber si va a usarlos de manera efectiva..

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
  • terminando: restableciendo los datos del post

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..

Parámetros de categoría

Vamos a empezar con los parámetros de categoría. Las opciones que tiene aquí son las siguientes:

  • gato (En t): usar id de categoría.
  • nombre de la categoría(cuerda): usar slug categoría (NO nombre).
  • categoría__y (formación): usar id de categoría.
  • category__in (formación): usar id de categoría.
  • category__not_in (formación): usar id de categoría.

Tenga en cuenta que para ninguno de estos utiliza el nombre de su categoría. Incluso el nombre de la categoría el parámetro toma la barra como su valor, no su nombre. Tiendo a usar este en lugar de la ID, ya que cuando vuelvo a mi código en una fecha posterior, las babosas son más fáciles de identificar que las ID. Sin embargo, si cree que los usuarios de su sitio pueden cambiar el slug para una o más categorías, recomiendo usar la ID para evitar cualquier problema.

Echemos un vistazo a cómo usas cada uno de estos.

El parámetro del gato

los gato el parámetro es sencillo: solo use un ID de categoría único o una cadena de ID de categoría.

La búsqueda de una categoría se ve así:

$ args = array ('cat' => '12');

La búsqueda de múltiples categorías se ve así:

$ args = array ('cat' => '12, 13, 14 ');

Lo anterior le indicará a WordPress que busque las publicaciones que se encuentran en cualquiera de las categorías enumeradas. Si desea buscar publicaciones en cada una de una serie de categorías, use la categoría_y parámetro, de los cuales en breve.

También puede usar el parámetro cat para encontrar publicaciones que están en una categoría pero no en otra, usando un signo menos antes del ID de categoría de la siguiente manera:

$ args = array ('cat' => '12, -13 ');

Lo anterior sería consultar los mensajes en la categoría. 12 pero no en la categoría 13.

El parámetro category_name

los nombre de la categoría el parámetro usa la categoría slug, no el nombre (confuso, lo sé). Nuevamente, puedes usarlo con una sola categoría o con una serie de categorías para encontrar publicaciones que estén en cualquiera de las categorías..

Para consultar publicaciones en una sola categoría agregas:

$ args = array ('category_name' => 'my-slug');

Y para encontrar publicaciones en una o más categorías, usa esto:

$ args = array ('category_name' => 'my-slug, your-slug, another-slug');

Al igual que con el parámetro cat, esto no encontrará publicaciones que estén en todos de las categorías, pero se encontrará puestos en alguna de las categorias.

La categoría y el parámetro

Si desea buscar publicaciones que estén en todas las categorías, este es el parámetro que usa. Toma los identificadores de categoría por su valor. Entonces, para encontrar publicaciones en las tres categorías, usaría:

$ args = array ('category__and' => array ('12', '13', '14'));

Tenga en cuenta que esto utiliza una matriz, no una cadena, por lo que se codifica de manera diferente. El parámetro tiene dos guiones bajos en su nombre: use solo uno y no funcionará.

El parámetro category__in

El siguiente parámetro busca publicaciones en una o más de una serie de categorías. En realidad, funciona de la misma manera que el parámetro cat y también toma el ID de categoría como su valor.

Por lo tanto, para consultar publicaciones en una o más de una serie de categorías, debe usar:

$ args = array ('category__in' => array ('12', '13', '14'));

Lo anterior buscaría publicaciones de una o más de estas categorías..

El parámetro category__not_in

los category__not_in el parámetro hace lo que usted esperaría: consulta las publicaciones que no están en una categoría o una matriz de categorías.

Para excluir publicaciones de una categoría, usaría lo siguiente:

$ args = array ('category__not_in' => '12');

Y para excluir publicaciones de una serie de categorías:

$ args = array ('category__not_in' => array ('12', '13', '14'));

Esto excluiría las publicaciones de cualquiera de estas categorías..

Parámetros de etiqueta

Las etiquetas tienen parámetros ligeramente diferentes de las categorías: me temo que no se puede calcular qué podrían estar basadas en su conocimiento de los parámetros de categoría.!

Los parámetros de la etiqueta son:

  • etiqueta (cuerda): usar etiqueta babosa.
  • tag_id (En t): usa la identificación de la etiqueta.
  • tag__and (formación): usar identificadores de etiquetas.
  • tag__in (formación): usar identificadores de etiquetas.
  • tag__not_in (formación): usar identificadores de etiquetas.
  • tag_slug__and (formación): usar etiquetas babosas.
  • tag_slug__in (formación): usar etiquetas babosas.

Echemos un vistazo a cada uno de estos.

El parámetro de etiqueta

los etiqueta parámetro toma la etiqueta slug por su valor y se puede usar para encontrar publicaciones con una etiqueta o con cualquiera de una cadena de etiquetas.

Entonces, para encontrar publicaciones con una etiqueta que uses:

$ args = array ('tag' => 'my-tag');

Y para encontrar publicaciones con etiquetas de una variedad de etiquetas:

$ args = array ('tag' => 'my-tag, your-tag, another-tag');

Tenga en cuenta que las consultas anteriores con alguna de las etiquetas en la matriz, no todas ellas.

El parámetro tag_id

los tag_id parámetro funciona de manera similar a la gato parámetro: toma el ID de la etiqueta y se puede utilizar con una sola etiqueta o varias etiquetas.

Para encontrar publicaciones con una sola etiqueta, usa esto:

$ args = array ('tag_id' => '21');

Para buscar publicaciones con una o más etiquetas de una cadena de ID de etiquetas:

$ args = array ('tag_id' => '21, 22, 23 ');

También puedes usar tag_id para excluir etiquetas, ya sea cuando se usa para etiquetas individuales o múltiples etiquetas.

Por lo tanto, para consultar publicaciones, excepto aquellas con una etiqueta dada, usarías:

$ args = array ('tag_id' => '-21');

Mientras busca publicaciones con una de dos etiquetas pero sin otra etiqueta, usaría esto:

$ args = array ('tag_id' => '21, -22, 23 ');

Así que lo anterior consultará las publicaciones con una o ambas etiquetas. 21 o 23 pero no etiqueta 22.

El parámetro tag__in

Este parámetro le permite encontrar publicaciones con una o más de una matriz de etiquetas. Funciona de la misma manera que etiqueta cuando se utiliza con una matriz:

$ args = array ('tag_in' => array ('21', '22', '23'));

Esto consultará las publicaciones con cualquiera o todas las etiquetas enumeradas. Si quieres encontrar publicaciones con todas las etiquetas, usas tag__and, que voy a cubrir en un momento.

El parámetro tag__not_in

los tag__not_in El parámetro le permite consultar publicaciones que no tienen una etiqueta o matriz de etiquetas determinadas.

Úselo así para excluir una etiqueta:

$ args = array ('tag__not_in' => array ('21'));

Tenga en cuenta que aún necesita usar una matriz aunque solo esté usando una etiqueta. Para más etiquetas, use:

$ args = array ('tag__not_in' => array ('21', '22', '23'));

Esto consultará las publicaciones que no tienen ninguna de las etiquetas anteriores.

Los parámetros tag_slug__and y tag_slug__in

Estos dos parámetros se comportan exactamente de la misma manera que el tag__and y tag__in parámetros, excepto que utiliza esa barra de etiqueta en sus matrices en lugar de la ID de etiqueta.

Entonces, por ejemplo, para encontrar publicaciones que tengan ambas etiquetas, usas tag__slug_in:

$ args = array ('tag_slug__in' => array ('my-tag', 'your-tag', 'another-tag'));

Esto encuentra publicaciones con cualquiera de estas etiquetas. También puede usar el parámetro tag con una cadena de slugs para lograr el mismo resultado..

Para incluir publicaciones con todo un conjunto de etiquetas, use tag_slug__and:

$ args = array ('tag_slug__and' => array ('my-tag', 'your-tag', 'another-tag'));

En lugar de consultar publicaciones con cualquiera de las etiquetas, esto solo consulta las publicaciones que tienen todos de las etiquetas.

Resumen

Consultar tus publicaciones por categoría y / o etiqueta es algo que es muy probable que tengas ocasión de hacer WP_Query. Al usar los argumentos anteriores y combinarlos cuando sea necesario, puede crear argumentos poderosos para extraer exactamente los datos que necesita de la base de datos.