Meta_Query de WordPress: todo lo que necesita saber

Publicado: 2022-04-30

Una de las herramientas más poderosas de WordPress es la capacidad de agregar campos personalizados a las publicaciones. Muchos desarrolladores utilizan campos personalizados avanzados o metacampos personalizados para las publicaciones.

En esta publicación, veremos cómo consultar publicaciones por campo personalizado utilizando la función meta_query en WordPress. Esto es útil para sitios con muchas funciones personalizadas.


Consultar publicaciones por un valor meta

Probablemente, la forma más popular de consultar publicaciones con un campo personalizado es apuntar a un metavalor específico. Por ejemplo, digamos que tenemos un sitio donde las publicaciones tienen un campo personalizado que se usa para determinar si una publicación es "destacada". Esto es común cuando se crea una sección destacada en un sitio de WordPress.

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'featured_post' ,
'value' => 'yes' ,
'compare' => '='
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value.php hosted with by GitHub

Por supuesto, el código anterior variará según el título que le des a tus campos y claves meta, pero la 'clave' es el nombre del campo personalizado, mientras que el 'valor' es lo que buscamos en las publicaciones. El campo 'comparar' se usa para una variedad de operaciones de comparación que veremos más adelante en la publicación.

Usar esto en WP_Query nos permitirá obtener una matriz que es excelente para que las funciones de bucle muestren publicaciones. En esta publicación, solo repasaremos las funciones de meta_query en lugar de cómo mostrar la salida de WP_Query.


Consultar publicaciones por múltiples valores meta

Si desea verificar el valor de una clave meta con múltiples valores, es mejor usar el operador 'IN'.

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value-multiple.php hosted with by GitHub

Consultar publicaciones por múltiples claves meta

Ahora que hemos consultado publicaciones con una sola clave meta, hagamos una consultando varios campos/claves. Esto le permitirá consultar publicaciones basadas en múltiples campos personalizados. Este ejemplo combina las dos cosas que hicimos anteriormente al anidar las consultas en una matriz y agregar una 'relación' a la meta_consulta.

<?php
$ meta_query_args = array (
'meta_query' => array (
'relation' => 'AND' ,
array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
),
array (
'key' => 'featured_post' ,
'value' => true ,
'compare' => '='
)
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-meta-query-multiple-keys.php hosted with by GitHub

El campo 'relación' se puede establecer en 'Y' u 'O' para que pueda exigir que se cumplan todas las condiciones o solo una.


Operadores de comparación de metaconsultas

Hay algunos operadores que serán útiles para consultar tus publicaciones por metaconsulta. Aquí hay un desglose rápido de cada operador de comparación y cómo puede usarlos.

  • '=' Consulta claves meta que equivalen a un valor meta
  • '!=' Consulta claves meta que NO son iguales a un valor meta
  • '>' Consulta claves meta que son mayores que el valor meta
  • '>=' Consulta claves meta que son mayores que e iguales al valor meta
  • '<' Consulta claves meta que son menores que el valor meta
  • '<=' Consulta claves meta que son menores e iguales al valor meta
  • 'LIKE' Consulta claves meta que contienen una palabra/frase (por ejemplo, consultar "rojo" coincidiría con las frases "Rojo", "parece rojo" y "estilo rojo")
  • 'NO ME GUSTA' Lo opuesto a lo anterior
  • 'IN' Consulta claves meta donde el valor existe en una matriz
  • 'NOT IN' Consulta claves meta donde el valor no existe en una matriz
  • 'BETWEEN' Consulta claves meta donde el valor está entre dos números
  • 'NO ENTRE' Consulta claves meta donde el valor no está entre dos números
  • 'EXISTS' Consulta claves meta donde el valor existe en absoluto
  • 'NO EXISTE' Consulta claves meta donde el valor no existe en absoluto
  • 'REGEXP' Consulta claves meta basadas en una expresión regular
  • 'NO REGEXP' Opuesto a REGEXP anterior

Cómo ordenar las publicaciones por metacampos

Por supuesto, WordPress le permite ordenar las publicaciones usando sus campos personalizados usando la opción 'ordenar por' en WP_Query. Deberá configurar 'orderby' para que sea 'meta_value' y luego establecer un valor 'meta_key' para el nombre de su campo. De forma predeterminada, esto es más útil cuando desea que su consulta regrese alfabéticamente u ordenada por número cuando su campo es un número.

<?php
$ meta_query_args = array (
'post_type' => 'page' ,
'order' => 'ASC' ,
'meta_key' => 'city_name' ,
'orderby' => 'meta_value'
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-orderby-meta-query.php hosted with by GitHub