Ordinare WP Query per valore meta (data)

20 nov 2014, 19:03:22
Visualizzazioni: 16.9K
Voti: 1

Ho il seguente codice in cui voglio ordinare per la meta key "event_date" e mostrare solo i post con data successiva a oggi e fino a 3 settimane nel futuro. In qualche modo non succede nulla, anche quando semplifico la WP Query solo al tipo di post e all'ordinamento, non viene stampato nulla, lo script semplicemente muore dove il codice è inserito.

<?php $events_args = array(
    'meta_query' => array(
        array(
            'key' => 'event_date',  // Chiave meta per la data dell'evento
            'value' => date('d-m-Y', strtotime("+3 weeks")),  // Data odierna + 3 settimane
            'compare' => '<',  // Confronto "minore di"
            'type' => 'DATE'  // Tipo di dato
        )
    ),
    'posts_per_page' => 3,  // Numero di post da mostrare
    'post_type' => 'event',  // Tipo di post
    'meta_key' => 'event_date',  // Chiave meta per l'ordinamento
    'orderby' => 'meta_value',  // Ordina per valore meta
    'order' => 'ASC'  // Ordinamento ascendente
    ); ?>
    
<?php $upcoming_events = new WP_Query($events_args); ?>
<?php if($upcoming_events->have_posts()): while($upcoming_events->have_posts()): $upcoming_events->the_post(); ?>
    <a href="<?php the_permalink(); ?>"><article class="post_block">
        <h2><?php the_title(); ?></h2>
        <p class="date"><?php $date = new DateTime(get_field('event_date')); echo $date->format('d-m-Y'); ?><?php // echo get_the_date('d-m-Y'); ?></p>
        <p class="text"><?php echo get_the_excerpt(); ?></p>
    </article></a>
<?php endwhile; endif; wp_reset_postdata(); ?>

Qualche idea sul perché non viene restituito alcun output? Se eseguo una semplice query_posts come:

query_posts('posts_per_page=3&post_type=event&meta_key=event_date&orderby=meta_value&order=DESC');

allora stamperà gli eventi, ma li ordinerà per gli eventi più recenti, mentre io ho bisogno di ordinare solo gli eventi da oggi fino a 3 settimane nel futuro.

6
Commenti

Hai attivato il debugging?

Milo Milo
20 nov 2014 19:19:47

No, ma ho appena provato ad attivarlo e ho scoperto che mi mancava "New" davanti a WP_Query. Anche se questo non risolve il mio problema, perché comunque stampa solo gli eventi più recenti. Quelli con una data evento del 2015... :/ Penso che il mio meta_query debba essere sbagliato, in qualche modo.

Dueify Dueify
20 nov 2014 19:56:59

il formato della data è invertito, devi memorizzarlo nel formato yyyy-mm-dd per ordinare per data.

Milo Milo
20 nov 2014 20:50:52

Grazie. Ho scoperto che il formato della data era sbagliato, come hai fatto notare.

Dueify Dueify
20 nov 2014 20:55:13

Vedi: http://wordpress.stackexchange.com/a/78048/21376

s_ha_dum s_ha_dum
20 nov 2014 22:22:09

Grazie ancora. Anche se il formato che ho dovuto inserire per farlo funzionare era: Ymd, perché è quello che uso per memorizzare nel mio campo event_date.

Dueify Dueify
20 nov 2014 22:33:11
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 1
0

Necessario inserire il formato corretto della data: Ymd oppure yyyy-mm-dd.

20 nov 2014 22:33:36