Saltar al contenido
Codif铆ca.me | Desarrollo web | Programaci贸n

WordPress c贸mo ordenar el loop por un meta valor

9 septiembre, 2019
wordpress

Normalmente cuando creamos un WP_Query en WordPress lo podemos ordenar por alg煤n campo del post por ejemplo por el t铆tulo o por la fecha de publicaci贸n pero que pasa cuando hemos creado un valor meta y queremos ordenarlo por ese valor, WP_Query viene al rescate.

Supongamos que tenemos dos meta valores, uno que se llama arquitecto y otro que se llama a帽o.

Si queremos ordenar alfab茅ticamente por el meta valor de arquitecto nuestro WP_Query quedar铆a de la siguiente forma:

$args = array('post_type' => 'post', 'meta_key' => 'arquitecto', 'orderby' => 'meta_value', 'order' => 'ASC');
$query = new WP_Query($args);

Aqu铆 estamos diciendo:

  • $pos_type=post, todos las entradas tipo post, aqu铆 tambien puede ser page o alg煤n tipo de entrada personalizado que tengamos.
  • $meta_key, es el nombre de nuestro meta en este caso arquitecto.
  • $orderby, es por qu茅 par谩metro vamos a ordenar aqu铆 le decimos que ordene por el valor meta que seleccionamos anteriormente.
  • $order, el sentido del order puede ser ASC de menor a mayor o DESC de mayor a menor.

Ahora si queremos ordenar por el meta valor de a帽o que es un valor num茅rico tenemos que hacer un peque帽o cambio:

$args = array('post_type' => 'post', 'meta_key' => 'a帽o', 'orderby' => 'meta_value_num', 'order' => 'ASC');
$query = new WP_Query($args);

Vemos que dejamos los par谩metros casi igual lo 煤nico que cambia es 鈥榤eta_key鈥=>鈥檃帽o鈥 para seleccionar el meta que queremos filtrar y  鈥榦rderby鈥 => 鈥榤eta_value_num鈥 para indicarle a WordPress que este valor es num茅rico.

Eso es todo luego podemos usar nuestro loop como siempre lo hacemos:

while ($query->have_posts()) {

...

}

As铆 vemos que es muy f谩cil ordenar un loop a trav茅s de un meta valor.