Múltiples ordenamientos en la acción pre_get_posts

1 dic 2014, 18:23:24
Vistas: 21.2K
Votos: 8

Solía poder ordenar los resultados de una consulta por 2 criterios ("ordenar resultados primero por estado=no vendido ASC y luego por fecha DESC) de esta manera:

add_action( 'pre_get_posts', 'my_get_posts' );

function my_get_posts( $query )
{
    if (is_admin()){
        return;
    }

   if (is_post_type_archive('objet')){

            // Stock: ordenar primero por no vendidos, luego por fecha
            $query->set('meta_key', 'wpcf-object-sold-status' );
            $query->set('orderby', 'meta_value date');
            $query->set('order', 'ASC DESC' );
        }
    return $query;
}

Pero ahora, ya no cambia el orden de los resultados. No tengo idea de por qué dejó de funcionar. ¿Tal vez fue por la actualización de WordPress 3 a 4?

1
Comentarios

algunos de los códigos de ordenamiento cambiaron en la versión 4, prueba con el formato de arreglo: 'orderby' => array( 'meta_value' => 'ASC', 'date' => 'DESC' )

Milo Milo
1 dic 2014 18:54:53
Todas las respuestas a la pregunta 1
0
19

Como dijo Milo:

$query->set('meta_key', 'wpcf-object-sold-status' );
$query->set('orderby', array('meta_value' => 'ASC', 'date' => 'DESC'));
// $query->set('order', 'ASC DESC' ); // no es necesario

Enlace relevante: https://make.wordpress.org/core/2014/08/29/a-more-powerful-order-by-in-wordpress-4-0/

2 dic 2014 00:44:25