web-dev-qa-db-fra.com

Filtrer and classer par plusieurs méta valeurs personnalisées

J'essaie d'interroger un type d'article personnalisé, de le classer selon une méta valeur personnalisée et d'afficher uniquement les articles avec une méta valeur personnalisée différente.

Je suis capable de faire chacun indépendamment mais pas les deux en même temps.

Voici le code actuel.

$args = array(
    'posts_per_page' => -1,
    'post_type' => 'shows',
    'orderby' => 'meta_value_num',
    'meta_key' => 'start_date',
    'order' => 'ASC',
    'meta_query' => array(
            array(
            'meta_key' => 'show_location',
            'meta_value' => 'second'
            )
    )
);                  
// get results
$the_query = new WP_Query( $args );

Mon code NOUVEAU résultant de la réponse ci-dessous:

$args = array(
    'posts_per_page' => -1,
    'post_type' => 'shows',
    'orderby' => 'meta_value_num',
    'meta_key' => 'start_date',
    'order' => 'ASC',
    'meta_query' => array(
            array(
            'key' => 'show_location',
            'value' => 'second'
            )
    )
);
1
Durhammer

Pour plusieurs méta-valeurs, vous devez utiliser "IN"

$args = array(
    'posts_per_page' => -1,
    'post_type' => 'shows',
    'orderby' => 'meta_value_num',
    'meta_key' => 'start_date',
    'order' => 'ASC',
    'meta_query' => array(
            array(
            'key' => 'show_location',
            'value' => array('second','third'),
            'compare' => 'IN'
            )
    )
);                  
// get results
$the_query = new WP_Query( $args );

La comparaison IN vérifie si la publication est disponible avec les valeurs présentes dans le tableau 'meta_value'.

0
Karun