Si has estado siguiendo esta serie, ya sabrás cómo se estructura WP_Query
y cómo usarlo para escribir consultas personalizadas. Para poder definir qué va a recuperar WP_Query
de la base de datos, necesitas conocer qué argumentos puedes usar para solicitar datos.
WP_Query
cuenta con gran cantidad de posibles argumentos, lo que lo hace extremadamente flexible. Dado que lo puedes usar para consultar sobre cualquier cosa presente en tu tabla wp_posts
, dispone de argumentos para cualquier combinación de consulta relacionada con tu contenido que desees ejecutar.
En este tutorial vamos a ver los argumentos para los campos personalizados o, como los llamaremos a partir de ahora, ‘custom fields’. Pero primero, un breve recordatorio sobre cómo codificar los argumentos en WP_Query
.
Recordando cómo funcionan los argumentos en WP_Query
Antes de empezar, recordemos cómo funcionan los argumentos en WP_Query
. Cuando codificas WP_Query
en tus temas o plugins, debes incluir cuatro elementos principales:
- Los argumentos de la consulta, usando los parámetros que vamos a ver en este tutorial.
- La consulta en sí.
- El loop.
- Y para terminar: las etiquetas de cierre
if
ywhile
y el restablecimiento de los datos del post.
En la práctica, esto tendrá el siguiente aspecto:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php $args = array( // Argumentos para tu consulta. ); // Consulta personalizada. $query = new WP_Query( $args ); // Comprueba que tenemos resultados a nuestra consulta. if ( $query->have_posts() ) { // Revisa todas las entradas para localizar aquellas que se ajustan a nuestros argumentos. while ( $query->have_posts() ) { $query->the_post(); // Aquí van los contenidos de las entradas resultantes de la consulta. } } // Restaurar los valores originales de la entrada. wp_reset_postdata(); ?> |
Los argumentos le indican a WordPress qué datos recuperar desde la base de datos, eso es precisamente lo que veremos aquí. Por tanto, nos vamos a centrar en la primera parte del código:
1 2 3 |
$args = array( // Argumentos de tu consulta. ); |
Como puedes ver, los argumentos están contenidos en una matriz o array. Aprenderás a crearlas a lo largo de este tutorial.
Crear el código para tus argumentos
Hay una forma concreta de codificar los argumentos de un array, es la siguiente:
1 2 3 4 5 |
$args = array( 'parameter1' => 'value', 'parameter2' => 'value', 'parameter3' => 'value' ); |
Debes encerrar los parámetros y sus valores entre paréntesis, usar =>
entre cada parámetro y su valor, y separar cada uno de estos pares mediante una coma. Si lo haces mal, posiblemente WordPress no agregará todos tus argumentos a la consulta u obtendrás una pantalla blanca como resultado.
Parámetros para los campos personalizados
Los campos personalizados, conocidos también como metadatos de la entrada, pueden usar una clase independiente llamada WP_Meta_Query
. Esto significa que si quieres ejecutar únicamente una consulta sobre datos de una entrada, puedes usar tanto WP_Meta_Query
como WP_Query
(el cual accede a WP_Meta_Query
), mientras que si quieres consultar metadatos de una entrada y de otros elementos como un post type, usarías WP_Query
.
Veremos con más detalle la clase WP_Meta_Query
en otro capítulo de esta serie, así que no entraré en detalles ahora, simplemente quiero señalar que la diferencia entre usar esto y WP_Query
consiste en que WP_Query
te permite crear algunos argumentos sencillos sin necesidad de usar arrays anidados.
Parámetros para consultas de campos personalizados sencillos
Los principales parámetros de WP_Query
para consultar campos personalizados son los siguientes:
meta_key
(string): La clave del campo.meta_value
(string): Valor del campo personalizado.meta_value_num
(number): El valor del campo personalizado.meta_compare
(string): Operador para comprobar el'meta_value'
. Los valores posibles son'='
,'!='
,'>'
,'>='
,'<'
,'<='
,'LIKE'
,'NOT LIKE'
,'IN'
,'NOT IN'
,'BETWEEN'
,'NOT BETWEEN'
,'NOT EXISTS'
,'REGEXP'
,'NOT REGEXP'
o'RLIKE'
. El valor predeterminado es'='
.
Usa estos parámetros para realizar una consulta sencilla sobre un campo personalizado. Por ejemplo, para dar salida a los posts que tengan un campo personalizado con la clave key1
(con independencia de su valor), usarías el siguiente argumento:
1 2 3 |
$args = array( 'meta_key' => 'key1' ); |
Esto devolverá todos los posts que contengan un campo personalizado con la clave key1
, sea cual sea su valor.
Si quieres especificar el valor, añadirías un argumento más, mira este ejemplo:
1 2 3 4 |
$args = array( 'meta_key' => 'key1', 'meta_value' => 'value1' ); |
Esto devolverá todas las entradas que contengan un campo personalizado con la clave key1
cuyo valor sea igual a value1
.
De igual manera, podrías recuperar todos los posts con un campo personalizado con un valor value1
, sea cual sea su clave (key). Esto podría ser útil en el caso de que tengas múltiples claves de campos personalizados con valores duplicados:
1 2 3 |
$args = array( 'meta_value' => 'value1' ); |
De manera que, como ves, puedes consultar simplemente por la clave del campo personalizado o por su valor – no siempre tienes que especificar ambos.
Lo que te queda por leer:
-
Usar el argumento meta_compare
-
Consultas anidadas de campos personalizados
Deja una respuesta