Múltiples valores orderby en WP_Query

20 sept 2012, 18:50:22
Vistas: 58.5K
Votos: 22

Estoy tratando de crear una consulta para ordenar por múltiples valores orderby. Esto es lo que tengo hasta ahora:

    $dept_id=2;
    $query=new WP_Query(array(
            'post_type'=>'wpcontactus',
            'nopaging'=>true,
            'post_status'=>array('publish', 'pending', 'future'),
            'meta_key'=>'wcu_dept',
            'meta_value'=>$dept_id,
            'orderby'=>'title',
            'order'=>'ASC'
    ));

Estoy intentando consultar un tipo de entrada personalizada, y dentro de ese tipo de entrada, consultar un valor meta.

Luego, me gustaría ordenar primero por menu_order ascendente, y después por un valor meta personalizado wcu_lastname ascendente. Sin embargo, el valor orderby parece no aceptar un array.

¿Cómo puedo ordenar la consulta usando múltiples valores orderby?

1
Comentarios

Si no me equivoco, simplemente agrégalos separados por espacios.

kaiser kaiser
20 sept 2012 19:05:12
Todas las respuestas a la pregunta 3
0
37

@Musa ¿Cómo podemos poner múltiples valores de orden para los campos? Me estaba preguntando lo mismo y encontré esto:

En la versión 4.0, ahora puedes pasar un array a WP_Query como valor para orderby.

La sintaxis luce así:

$q = new WP_Query( array( 
    'orderby' => array( 
       'title'      => 'DESC', 
       'menu_order' => 'ASC' 
    ) 
));

Mira aquí para más detalles: https://make.wordpress.org/core/2014/08/29/a-more-powerful-order-by-in-wordpress-4-0/

21 ene 2015 10:47:29
1
11
$query=new WP_Query(array(
                'post_type'=>'wpcontactus', // Tipo de post personalizado
                'nopaging'=>true, // Mostrar todos los resultados sin paginación
                'post_status'=>array('publish', 'pending', 'future'), // Estados de post a incluir
                'meta_query'=>array(
                                array('key'=>'wcu_dept','value'=>$dept_id, 'compare'=>'='), // Consulta por metadato específico
                            ),
                'meta_key'=>'wcu_firstname', // Clave de metadato para ordenación
                'orderby'=>'menu_order wcu_firstname', // Criterios de ordenación
                'order'=>'ASC' // Orden ascendente
        ));

Utilizando lo que sugirió @kaiser y la opción meta_query, pude obtener la consulta que estaba buscando.

20 sept 2012 19:15:06
Comentarios

¿cómo podemos poner múltiples valores de orden para los campos? Por ejemplo: ASC para menu_order, DESC para date

Musa Musa
20 mar 2014 13:44:01
0
    $args = [
        's'              => $keyword, // Término de búsqueda
        'post_type'      => ['page'], // Tipo de post: páginas
        'paged'          => $paged, // Paginación
        'posts_per_page' => PAGE_LIMIT, // Límite de posts por página
        'tax_query' => [ // Consulta de taxonomía
             [
                  'taxonomy'         => TAX_RESOURCE_PAGE, // Taxonomía
                  'field'            => 'slug', // Campo: slug
                  'terms'            => $c_term_slug // Términos a buscar
             ],
        ],
        'post_status'    => 'publish', // Estado: publicado
        'meta_key'       => 'order', // Clave meta: orden
        'meta_type'      => 'NUMERIC', // Tipo meta: numérico
        'orderby'        => [ // Ordenamiento
             'meta_value_num' => 'ASC', // Orden ascendente por valor meta numérico
             'ID' => 'DESC', // Orden descendente por ID
        ],
    ];
    $wp_query = new WP_Query( $args ); // Nueva consulta WP_Query

mi código es un ejemplo.

26 jul 2019 06:12:24