WP Query Ordenar por valor meta (fecha)

20 nov 2014, 19:03:22
Vistas: 16.9K
Votos: 1

Tengo el siguiente código donde quiero ordenar por la meta clave "event_date" y solo mostrar posts después de la fecha actual y con 3 semanas de anticipación. Por alguna razón no pasa nada, incluso cuando reduzco el WP Query a solo tipo de post y orden, no se imprime nada, el script simplemente muere donde se inserta el código.

<?php $events_args = array(
    'meta_query' => array(
        array(
            'key' => 'event_date', // Clave del campo personalizado
            'value' => date('d-m-Y', strtotime("+3 weeks")), // Fecha actual + 3 semanas
            'compare' => '<', // Comparar menor que
            'type' => 'DATE' // Tipo de dato fecha
        )
    ),
    'posts_per_page' => 3, // Mostrar 3 posts
    'post_type' => 'event', // Tipo de post
    'meta_key' => 'event_date', // Clave meta para ordenar
    'orderby' => 'meta_value', // Ordenar por valor meta
    'order' => 'ASC' // Orden ascendente
    ); ?>
<?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(); ?>

¿Alguna idea de por qué no se muestra nada? Si ejecuto un simple query_posts como:

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

entonces imprimirá los eventos, pero los ordenará por los eventos más nuevos, y necesito ordenar los eventos desde hoy hasta 3 semanas adelante para mostrar solo esos.

6
Comentarios

¿Tienes habilitado el modo de depuración?

Milo Milo
20 nov 2014 19:19:47

No, pero acabo de intentar activarlo y descubrí que me faltaba poner "New" antes de WP_Query. Aunque esto no resuelve mi problema, porque de todas formas solo muestra los eventos más recientes. Los que tienen fecha de evento en 2015... :/ Creo que mi meta_query debe estar mal, de alguna manera.

Dueify Dueify
20 nov 2014 19:56:59

el formato de tu fecha está al revés, debes almacenarlo en el formato yyyy-mm-dd para ordenar por fecha.

Milo Milo
20 nov 2014 20:50:52

Gracias. Resultó que el formato de fecha era incorrecto como señalaste.

Dueify Dueify
20 nov 2014 20:55:13

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

s_ha_dum s_ha_dum
20 nov 2014 22:22:09

Gracias de nuevo. Aunque el formato que tuve que ingresar para que funcionara fue: Ymd, porque ese es el que uso para almacenar en mi campo event_date.

Dueify Dueify
20 nov 2014 22:33:11
Mostrar los 1 comentarios restantes
Todas las respuestas a la pregunta 1
0

Es necesario introducir el formato de fecha correcto: Ymd o aaaa-mm-dd.

20 nov 2014 22:33:36