¿Cómo usa orderby con meta_query en Wordpress 3.1?

20

¿Es posible ordenar mi lista de publicaciones personalizadas, después de filtrarla con meta_query, por los metadatos de mi elección?

Por ejemplo, tengo un tipo de publicación personalizada llamada webinars. Estoy tratando de enumerar todos los próximos seminarios web, y ordenarlos por el meta campo personalizado llamado webinar_startDate.

Usando la siguiente consulta, pude devolver los seminarios web con éxito, excluyendo los antiguos seminarios web. Sin embargo, aún salen en el orden en que fueron publicados, y no por 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'
); ?>

Sospecho que debido al cambio de 3.0 a 3.1, el uso de orderby = > meta_value es probablemente diferente, pero no puedo encontrar una respuesta en la documentación de WordPress para explicar esto.

¿Alguien puede ayudar? Gracias de antemano.

    
pregunta Jeff K. 02.03.2011 - 19:59

2 respuestas

17

la nueva matriz meta_query selecciona qué publicaciones devuelve la consulta. Entonces sí, estás indicando la 'clave' dentro de ese meta_query , pero aún puedes usar el método antiguo de

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

además de la meta-consulta, ya que estas líneas indican cómo ordenar la consulta resultante. Así que sí, puede indicar la misma meta_key dos veces.

    
respondido por el somatic 02.03.2011 - 20:38
1

Estoy usando el siguiente código para mis publicaciones personalizadas llamadas events , para obtener todas las publicaciones en un Loop.

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

Creo que estás usando tu código aproximadamente de la misma manera. Creo que te estás perdiendo el meta_key con el nombre del meta-campo para ordenar. Quizás ayude si añades

'meta_key' => 'webinar_startDate',

a la matriz externa?

    
respondido por el Guru 2.0 02.03.2011 - 20:34

Lea otras preguntas en las etiquetas