Argumentos WP_Query Campos personalizados

Si has estado siguiendo esta serie, comprenderás cómo WP_Query Está estructurado y cómo lo usas para escribir consultas personalizadas. Para poder definir que WP_Query desde la base de datos, necesita saber qué argumentos puede usar para consultar datos.

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 de los campos personalizados. Pero primero, un resumen rápido de cómo codificar los argumentos en WP_Query.

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 le dicen a WordPress qué datos obtener de la base de datos y estos son 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 campo personalizados

Los campos personalizados, también conocidos como metadatos de publicación, pueden usar una clase separada llamada WP_Meta_Query. Esto significa que si desea ejecutar una consulta solo para publicar metadatos, puede usar WP_Meta_Query o WP_Query (que accede WP_Meta_Query), mientras que si desea consultar los metadatos de la publicación y otros elementos como el tipo de publicación, utilice WP_Query.

los WP_Meta_Query La clase está cubierta en detalle en otra parte de esta serie, así que no voy a entrar en detalles sobre eso aquí, pero la diferencia principal entre usar eso y WP_Query es eso WP_Query te permite crear algunos argumentos simples sin usar matrices anidadas.

Parámetros para consultas simples de campos personalizados

Los principales parámetros para el uso. WP_Query Para consultar los campos personalizados son los siguientes:

  • meta_key (cuerda): Tecla de campo personalizado.
  • meta_valor (cuerda): Valor de campo personalizado.
  • meta_value_num (número): Valor de campo personalizado.
  • meta_compare (cuerda): Operador para probar el 'meta_valor'. Los valores posibles son '=''! =', '>''> =''<''<=''ME GUSTA''DIFERENTE A''EN''NO EN''ENTRE''NO ENTRE''NO EXISTE''REGEXP''NO REGEXP' o 'RLIKE'. El valor predeterminado es '='.

Utilice estos parámetros para una consulta de campo personalizado simple. Así, por ejemplo, para publicar publicaciones que tienen un campo personalizado con la clave llave1 (independientemente de su valor), utiliza este argumento:

$ args = array ('meta_key' => 'key1');

Esto devolvería todas las publicaciones con un campo personalizado con el llave1 llave, cualquiera que sea el valor.

Si quisiera especificar un valor, agregaría un argumento adicional para eso:

$ args = array ('meta_key' => 'key1', 'meta_value' => 'value1');

Esto devolvería todas las publicaciones con un campo personalizado con el llave1 clave y la valor1 valor para ello.

Alternativamente, puede recuperar todas las publicaciones con un campo personalizado con el valor valor1, independientemente de la clave. Esto puede ser útil cuando tiene varias claves de campo personalizadas con valores duplicados:

$ args = array ('meta_value' => 'value1');

Como puede ver, puede consultar solo la clave o el valor del campo personalizado, no siempre tiene que especificar ambos.

Usando el argumento meta_compare

Es posible que haya notado anteriormente que hay muchos parámetros potenciales para el meta_compare argumento, y su uso no siempre puede ser inmediatamente aparente. Echemos un vistazo a los que podrías usar más:

  • =: Igual a. Este es el valor predeterminado, por lo que si no incluye un meta_compare argumento, esto es lo que usará WP_Query.
  • !+: No es igual a.
  • >: Mas grande que.
  • > =: Mayor qué o igual a.
  • < : Menos que.
  • <=: Menos que o igual a.
  • ME GUSTA: Esto ignorará el caso del valor que usa, y también puede usarlo con caracteres comodín para encontrar valores como el valor que está buscando.
  • DIFERENTE A: Funciona de forma similar a LIKE pero consulta lo contrario!
  • EN: Use esto con una matriz en el argumento 'valor' para encontrar publicaciones con uno o más de los valores en la matriz.
  • ENTRE: Use con una matriz de dos valores numéricos (especificados en el meta_valor argumento) para buscar publicaciones con un valor de campo personalizado entre esos valores (pero no iguales a ellos).
  • NO ENTRE: Consulta publicaciones con valores de campo personalizados fuera de una matriz de dos valores numéricos especificados por el meta_valor argumento.

Veamos algunos ejemplos de usos de este argumento..

En primer lugar, puede excluir claves de campo personalizadas o valores usando la meta_compare argumento. Así que para recuperar todas las publicaciones, excepto aquellas con un campo personalizado con el llave1 Clave, usarías esto:

$ args = array ('meta_key' => 'key1', 'meta_compare' => '! =');

También puedes usar el 'NO EN' valor para el meta_compare argumento, que también se puede utilizar con una cadena de múltiples valores:

$ args = array ('meta_key' => 'key1, key2', 'meta_compare' => 'NOT IN');

Esto consultaría las publicaciones que no tienen campos personalizados con el llave1 o llave2 valores. Si desea ser más específico, tal vez consultar las publicaciones con un campo personalizado y no con otro, utilice una matriz anidada, que veremos en breve..

Los ejemplos anteriores utilizan valores no numéricos. Puedes usar WP_Query con campos personalizados que tienen valores numéricos, no solo para recuperar publicaciones con un campo personalizado con ese valor, sino también para obtener campos con campos personalizados con valores más altos o más bajos. Puede usar esto en una tienda, por ejemplo, si busca artículos por encima o por debajo de un precio determinado.

Para encontrar publicaciones con un valor de campo personalizado por encima de un número dado, use algo como esto:

$ args = array ('meta_key' => 'numkey', 'meta_value' => '100', 'meta_compare' => '>');

Esto devolvería todas las publicaciones con un campo personalizado con el numkey clave y un valor de más 100. Si quisiera consultar valores de 100 o más, usaría 'meta_compare' => '> ='.

También puede encontrar publicaciones cuyos campos personalizados tengan valores entre dos números que especifique utilizando el ENTRE argumento y una matriz:

$ args = array ('meta_key' => 'numkey', 'meta_value' => array ('100', '200'), 'meta_compare' => 'BETWEEN');

Esto encontraría todas las publicaciones con un valor en el numkey campo personalizado entre 100 y 200.

Consultas de campo personalizadas anidadas

Si desea consultar más de un campo personalizado o usar más de un operador, puede usar una matriz anidada.

Estos toman la siguiente estructura:

$ args = array ('meta_query' => array ('relation' => ", // Argumento opcional. array (// Los argumentos de 'meta_query' van aquí.)));

La forma en que usted estructura la 'meta_query' argumento en WP_Query es exactamente igual a como lo haces usando el WP_Meta_Query clase, que se trata en un tutorial posterior de esta serie, así que no voy a duplicar eso aquí.

Desde la versión 4.1 de WordPress, también puede utilizar múltiples niveles de matriz anidada para crear consultas cada vez más complejas y precisas. Estos se ven algo como esto:

$ args = array ('meta_query' => array ('relation' => ", // Argumento opcional. array ('relation' =>", array (// El primer conjunto de argumentos de 'meta_query' va aquí.), array (// El segundo conjunto de argumentos 'meta_query' va aquí.))));

Esto le permite usar diferentes relaciones en diferentes niveles en su consulta, por ejemplo, consultar publicaciones con un valor en una clave de campo personalizado, o con dos valores en otra clave de campo personalizado. Esto se trata con más detalle, con ejemplos, en el tutorial sobre la WP_Meta_Query clase, que es parte de esta serie.

Resumen

Utilizando la WP_Query La clase para consultar los metadatos de sus publicaciones (o campos personalizados) le brinda mucha flexibilidad, con múltiples argumentos potenciales combinados con una cantidad de operadores para ayudarlo a consultar su base de datos exactamente de la manera que desea..

Si solo desea utilizar argumentos de metadatos de publicación en su consulta (y no combinarlos con otros argumentos, por ejemplo, para tipos de publicación), también puede usar WP_Meta_Query clase, que se trata más adelante en esta serie.