Sortare WP Query după valoare meta (dată)

20 nov. 2014, 19:03:22
Vizualizări: 16.9K
Voturi: 1

Am următorul cod în care vreau să sortez după cheia meta "event_date" și să afișez doar postările după data de astăzi și în următoarele 3 săptămâni. Cumva nu se întâmplă nimic, chiar și atunci când simplific WP Query doar la tipul de postare și ordine, nu se afișează nimic, scriptul pur și simplu se oprește acolo unde este inserat codul.

<?php $events_args = array(
    'meta_query' => array(
        array(
            'key' => 'event_date',
            'value' => date('d-m-Y', strtotime("+3 weeks")),
            'compare' => '<',
            'type' => 'DATE'
        )
    ),
    'posts_per_page' => 3, 
    'post_type' => 'event', 
    'meta_key' => 'event_date', 
    'orderby' => 'meta_value', 
    'order' => 'ASC'
    ); ?>
<?php $upcoming_events = 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(); ?>

Are cineva idee de ce nu se afișează nimic? Dacă rulez un simplu query_posts ca:

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

atunci vor apărea evenimentele, dar le va sorta după cele mai noi evenimente, iar eu trebuie să le sortez doar pe cele de la data de astăzi și în următoarele 3 săptămâni.

6
Comentarii

Ai activat depanarea (debugging)?

Milo Milo
20 nov. 2014 19:19:47

Nu, dar tocmai am încercat să o activez și am descoperit că am omis "New" în fața lui WP_Query. Totuși, asta nu rezolvă problema mea, pentru că tot afișează cele mai recente evenimente. Pe cele cu data evenimentului din 2015... :/ Cred că meta_query-ul meu este greșit, cumva.

Dueify Dueify
20 nov. 2014 19:56:59

formatul tău de dată este invers, trebuie să-l stochezi sub forma yyyy-mm-dd pentru a sorta după dată.

Milo Milo
20 nov. 2014 20:50:52

Mulțumesc. S-a dovedit că formatul datei era greșit, așa cum ai subliniat.

Dueify Dueify
20 nov. 2014 20:55:13

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

s_ha_dum s_ha_dum
20 nov. 2014 22:22:09

Mulțumesc din nou. Deși formatul pe care a trebuit să-l introduc pentru a funcționa a fost: Ymd, pentru că acesta este cel pe care îl folosesc pentru a stoca în câmpul meu event_date.

Dueify Dueify
20 nov. 2014 22:33:11
Arată celelalte 1 comentarii
Toate răspunsurile la întrebare 1
0

Este necesar să introduceți formatul corect al datei: Ymd sau yyyy-mm-dd.

20 nov. 2014 22:33:36