Ordenar una consulta con query_posts en WordPress por un meta_value
Cuando trabajamos con consultas en WordPress, es muy probable que necesitemos ordenar la salida de alguna forma diferente a la estándar que suele ser por fecha de forma que el más reciente aparezca primero y vayan apareciendo de forma sucesiva entradas más antiguas.
Si usamos WordPress como una API o como una plataforma de aplicaciones, más que como un CMS y más aún como un CMS orientado a blogs, este hecho es una auténtica necesidad.
Un caso muy frecuente es que queramos ordenar la salida en función de un meta valor. La diferencia entre una tabla normal de una base de datos y la estructura de la base de datos de WordPress formada por entradas y sus meta valores, hace que no podamos aplicar el ORDER BY directamente a la tabla entradas.
¿Cómo tenemos que hacerlo? Muy simple, pasándole a query_posts una serie de parámetros que lo indiquen, veamos un ejemplo autoexplicativo:
$query_args['order'] = "ASC"; $query_args['meta_key'] = "mi_meta_clave"; // elegimos sobre qué tipo de meta valor queremos ordenar $query_args['orderby'] = "meta_value_num"; query_posts($query_args);
Como veis es sencillo, sólo tendremos que indicar:
- El orden
- Sobre qué meta_key ordenar, por ejemplo “precio” o la que uséis
- Indicar en el orderby que queremos ordenar sobre el valor numérico de esa meta información
Con eso lo tenemos ya todo.