web-dev-qa-db-fra.com

Organiser les messages par date dans l'ordre du plus proche de la date du jour

J'ai une liste d'événements sur un site Web de clients qui apparaissent dans une barre latérale. Lorsque vous consultez la page d'accueil, vous voyez un événement et si vous êtes ailleurs sur le site, vous voyez deux événements dans la barre latérale. Je les commande actuellement en utilisant une meta_query compare qui vérifie si l'événement est aujourd'hui ou dans le futur.

Ce que j'aimerais faire, c'est que les événements soient affichés en commençant par le plus proche de la date actuelle, puis remontent la chaîne jusqu'à ce qu'elle en trouve une. Actuellement, il semble plutôt afficher les événements les plus éloignés dans le futur. Donc, si j'ai un événement le 27 janvier 2012 et un événement le 15 août 2012, il semble montrer l'événement d'août.

Le code que j'ai actuellement est le suivant. J'apprécierais quelques conseils sur la façon de le modifier pour qu'il fonctionne comme je le souhaite. Veuillez fournir une petite explication avec le code que vous publiez si possible. J'aimerais que ce soit une expérience d'apprentissage.

$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 );
2
Dwayne Charrington

Ceci est juste un coup dans le noir mais je voudrais essayer de classer les événements dans un ordre décroissant au lieu de croissant 'order' => 'DESC'

3
Nickiler

Je sais que cela est ancien, mais la commande par DESC n'a pas de sens dans ce cas .

Vous sélectionnez DATEs >=CURRENT_DATE, vous souhaitez maintenant afficher en premier celui qui est le plus proche d’aujourd’hui, disons demain et puis après-demain ...

Quelle est la plus grande date? Tomorrow ou day after tomorrow? Je ne sais pas pour vous, mais je parierais que tomorrow < day after tomorrow, par conséquent, commander DESC signifierait que vous auriez d’abord le lendemain, car il est plus grand.

Je pense que votre vrai problème est votre saisie (je suppose que vous stockez vos dates au format Y-m-d aussi ...

Dites WP_Query: "Je travaille avec des DATE":

1. Dites que la commande doit être faite en tapant à DATE

'meta_type' => 'DATE',

2. Supposons que la comparaison soit faite en tapant DATE

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

... alors simple:

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

... devrait bien fonctionner :)

2
jave.web