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_Queryen 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
ifywhiley 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