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