Comment utilisez-vous orderby avec meta_query dans Wordpress 3.1?

20

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 publication 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.

À l'aide de 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 soupçonne qu’en raison du passage de la version 3.0 à la version 3.1, l’utilisation de orderby = > meta_value est probablement différent, mais je ne trouve pas de réponse dans la documentation WordPress pour expliquer cela.

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

    
posée Jeff K. 02.03.2011 - 19:59

2 réponses

17

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 méta_query, car ces lignes indiquent comment trier la requête résultante. Alors oui, vous pouvez indiquer deux fois la même méta_key.

    
réponse donnée somatic 02.03.2011 - 20:38
1

J'utilise le code suivant pour mes messages personnalisés appelé events , afin d'obtenir tous les messages 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 que vous manquez le meta_key avec le nom du méta-champ à trier. Peut-être que cela aide si vous ajoutez

'meta_key' => 'webinar_startDate',

vers le tableau externe?

    
réponse donnée Guru 2.0 02.03.2011 - 20:34

Lire d'autres questions sur les étiquettes