J'utilise un plugin d'événements et je lutte pour que ma requête de base de données soit parfaite. La requête concerne le modèle event-single.php. Ce que j'ai besoin de la requête à faire:
_event_start_date
meta_key pour afficher la date la plus proche (événement le plus proche)Voici mes $ args actuels.
<?php $args = array(
'post__not_in' => array($donotrepeat),
"post_type" => 'event',
'meta_key' => '_event_start_date', // name of custom field
'orderby' => 'meta_value_num',
"order" => 'ASC',
"posts_per_page" => 1
);
?>
Définir $donotrepeat
plus tôt
$donotrepeat = get_the_ID();
Jusqu'ici, la requête a réussi
Je n'arrive pas à comprendre comment ignorer les dates "antérieures". Il existe une autre méta-clé "scope" créée par ce plugin qui contient des valeurs telles que "past" et "future" - cela pourrait donc être prometteur.
J'ai essayé d'utiliser meta_query pour résoudre le problème des dates passées, mais je n'arrive pas à le faire fonctionner. Je pense que c'est probablement la voie à suivre, mais je suis ouvert à d'autres idées. Je suis sûr que ce n'est pas si difficile ... quelqu'un peut-il aider?
Vous êtes assez proches, mais je ne me laisserais pas distraire par la méta-clé "scope". Ce qui suit n'est pas testé.
<?php
$args = array(
'post__not_in' => array($donotrepeat),
"post_type" => 'event',
'meta_key' => '_event_start_date', // name of custom field
'orderby' => 'meta_value',
"order" => 'ASC',
"posts_per_page" => 1,
'meta_query' => array(
array(
'key' => '_event_start_date',
'value' => date('Y-m-d'),
'compare' => '>=',
'type' => 'DATE'
)
),
);
?>
La clé meta_key n'est présente que pour la commande - meta_query contrôle la sélection réelle.
Notez que j'ai laissé votre posts_per_page en l'état, même si cela limite la sélection à un enregistrement.