web-dev-qa-db-fra.com

Comment utilisez-vous orderby avec meta_query dans Wordpress 3.1?

Est-il possible de commander ma liste d'articles personnalisés, après l'avoir filtrée avec meta_query, à l'aide des métadonnées de mon choix?

Par exemple, j'ai un type de message personnalisé appelé webinaires. J'essaie de répertorier tous les webinaires à venir et de les faire classer par le méta-champ personnalisé appelé webinar_startDate.

En utilisant la requête suivante, j'ai été en mesure de renvoyer les webinaires en excluant les anciens webinaires. Cependant, ils apparaissent toujours dans l'ordre dans lequel ils ont été publiés, et non par webinar_startDate.

<?php $my_array =  array(
    'meta_query' => array(
            array(
                'key' => 'webinar_startDate',
                'value' => date("Y-m-d H:i:s"),
                'compare' => '>=',
                'type' => 'DATETIME'
            )
    ),
    'orderby' => 'meta_value',
    'post_type' => 'webinars',
    'posts_per_page' => 20,
    'order' => 'ASC'
); ?>

Je suppose qu'en raison du passage de la version 3.0 à la version 3.1, l'utilisation de orderby => meta_value est probablement différente, mais je ne trouve pas de réponse dans la documentation WordPress pour l'expliquer.

Quelqu'un peut-il aider? Merci d'avance.

21
Jeff K.

le nouveau tableau meta_query sélectionne les publications renvoyées par la requête. Alors oui, vous indiquez la 'clé' dans ce meta_query, mais vous pouvez toujours utiliser l'ancienne méthode de

'orderby' => 'meta_value', 
'meta_key' => '_events_meta',

en plus de la meta_query, ces lignes indiquent comment sort la requête résultante. Alors oui, vous pouvez indiquer deux fois la même méta_key.

17
somatic

J'utilise le code suivant pour mes publications personnalisées, appelé events, afin d'obtenir toutes les publications dans une boucle.

$evtLoop = new WP_Query(array('post_type' => 'events',
                              'posts_per_page' => 10,
                              'orderby' => 'meta_value', 
                              'meta_key' => '_events_meta',
                              'order'=>'DESC'));

Je pense que vous utilisez votre code approximativement de la même manière. Je pense qu'il vous manque le meta_key avec le nom du méta-champ à trier. Peut-être que cela aide si vous ajoutez

'meta_key' => 'webinar_startDate',

au tableau extérieur?

1
Guru 2.0