Organizar publicaciones por fecha en el orden más cercano a la fecha actual

2

Tengo una lista de eventos en el sitio web de un cliente que se muestra en una barra lateral. Al ver la página de inicio, ve un evento y, si está en otro lugar del sitio, ve dos eventos en la barra lateral. Actualmente los estoy ordenando mediante una comparación meta_query que verifica si el evento es hoy o en el futuro.

Lo que me gustaría hacer es que los eventos se muestren lo más cerca posible de la fecha actual, y luego continuar por la cadena hasta que encuentre uno. Actualmente parece mostrar eventos más lejanos en el futuro en su lugar. Entonces, si tengo un evento el 27 de enero de 2012 y un evento el 15 de agosto de 2012, parece mostrar el evento de agosto.

El código que tengo actualmente es el siguiente. Apreciaría algunos consejos sobre cómo modificarlo para que funcione como yo quiero. Proporcione una pequeña explicación con cualquier código que publique, si es posible, me gustaría que esta sea una experiencia de aprendizaje.

$totalPosts = 2;

    $args = array(
        'post_type'        => 'upcoming_courses',
        'order'            => 'ASC',
        'orderby'          => 'meta_value',
        'suppress_filters' => true,
        'posts_per_page'   => $totalPosts,
        'numberposts'      => $totalPosts,
        'meta_query' => array(
          array(
            'key' => 'course_date',
            'value' => date('Y-m-d'),
            'compare' => '>=',
            'type' => 'NUMERIC'
          )
        )
    );

    $my_query  = new WP_Query( $args );
    
pregunta Dwayne Charrington 16.01.2012 - 06:15

2 respuestas

3

Esto es solo un tiro en la oscuridad, pero intentaría ordenar los eventos en orden descendente en lugar de ascendente. 'order' => 'DESC'

    
respondido por el Nickiler 16.01.2012 - 09:10
2

Sé que esto es antiguo, pero ordenar por DESC no tiene sentido para este caso .

Seleccionas DATE s >= CURRENT_DATE , ahora quieres mostrar primero el más cercano a hoy, digamos mañana y pasado mañana ...

¿Qué es una fecha mayor? Tomorrow o day after tomorrow ? No sé sobre ti, pero apostaría a que tomorrow < day after tomorrow , por lo tanto, pedir DESC significaría que primero serás pasado mañana, porque es mayor.

Creo que su problema real es su escritura (supongo que almacena sus fechas en formato Y-m-d también ...

Dígale a WP_Query : "Estoy trabajando con fechas":

1. Diga que el pedido se debe hacer escribiendo a la FECHA

'meta_type' => 'DATE',

2. Diga que la comparación se debe hacer escribiendo a DATE

'meta_query' => [
  [
    'key' => 'course_date',
    'value' => date('Y-m-d'),
    'compare' => '>=',
    'type' => 'DATE' //!important!
  ]
],

... entonces simple:

'orderby' => 'meta_value',
'order' => 'ASC',

... debería funcionar bien :)

    
respondido por el jave.web 21.03.2017 - 17:44

Lea otras preguntas en las etiquetas