Ordenar por metaclave múltiple y metavalor [cerrado]

16

¿Cómo puedo configurar el orden de las múltiples teclas meta por valor meta? ¿Alguien puede darme algún ejemplo?

Dhiraj Suthar
fuente
44
Bienvenido a WPSE: para que podamos ayudarlo, debe ayudarnos. ¿Puede describir con más detalle lo que está tratando de hacer y quizás publicar algunos ejemplos de código?
TheDeadMedic

Respuestas:

31

meta_queryes un conjunto de meta cláusulas. Por ejemplo:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

Puede usar una matriz asociativa, con una clave para cada meta cláusula:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

Luego, puede usar esas teclas en el order_byargumento, con una:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => 'city_clause', // Results will be ordered by 'city' meta values.
) );

O más cláusulas:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => array( 
        'city_clause' => 'ASC',
        'state_clause' => 'DESC',
    ),
) );

Ejemplo tomado de esta publicación en el blog Make WordPres Core.

cybmeta
fuente
no olvide agregar el tipo de meta clave / valor. afectará los resultados. de forma predeterminada, wp tratará tu meta como una cadena.
Alexander Ivashchenko
3
Pero, ¿qué sucede si no quiero devolver solo resultados donde el estado es Wisconsin? Quiero que se devuelvan todos los estados y quiero filas donde pueda haber o no una ciudad y aún así ordenarlas por esos 2 campos. por ejemplo, ninguna cláusula WHERE, solo un ORDER BY.
Felix Eve