J'ai une fonction qui devrait renvoyer la date de l'événement futur:
function get_upcoming_exercises( $limit = -1 ) {
$args = array(
'post_type' => 'px_event',
'posts_per_page' => $limit,
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => '_px_event_date',
'value' => date('m-d-y'),
'compare' => '>=',
),
),
'orderby' => 'key',
'order' => 'DESC',
);
$query = new WP_Query( $args );
return $query;
}
les dates sont stockées comme des chaînes (m-d-y):
10-25-2012
01-03-2013
La fonction ne fonctionne pas bien, car si je teste, par exemple, avec des dates supérieures à 11-22-2012, il n'affiche pas le 01-03-2013.
Si j'exécute la comparaison dans mysql, cela échoue aussi:
select * from wp_postmeta
where meta_key = '_px_event_date'
and meta_value >= '11-22-2012'
Qu'est-ce que je fais mal?
C'est vieux, mais simplement changer
date ('m-d-y') à date ('Y-m-d')
Devrait marcher. Avis CAP Y.
J'ai finalement modifié la fonction pour utiliser une requête SQL:
function get_upcoming_exercises( $limit = -1 ) {
global $wpdb;
$exercises_query = "select m.meta_value, p.*
from $wpdb->postmeta m, $wpdb->posts p
where m.meta_key = '_px_exercise_date'
and p.ID = m.post_id
and p.post_status = 'publish'
and STR_TO_DATE(meta_value, '%m-%d-%Y') >= STR_TO_DATE('" . date('m-d-y') . "', '%m-%d-%Y')
order by STR_TO_DATE(meta_value, '%m-%d-%Y') desc " ;
if ($limit != -1)
$exercises_query .= " limit ".$limit;
$exercises = $wpdb->get_results( $exercises_query );
return $exercises;
}