web-dev-qa-db-fra.com

WP_Query afficher le prochain message personnalisé à partir de la date du jour

J'ai un plugin de calendrier qui utilise des types de messages personnalisés pour créer des événements. Il existe plusieurs champs personnalisés qui me permettent de créer diverses requêtes de publication apparemment illimitées. Celui sur lequel je me concentre actuellement est le champ contenant la "date de début de l'événement", intitulé = evcal_start_date.

Ce que je dois faire est d’afficher le prochain événement d’aujourd’hui, ce qui est devenu un peu un défi.

WP_query actuel;

<?php
    $currentdate = date("m/d/Y",mktime(0,0,0,date("m"),date("d"),date("Y")));

    $my_query = new WP_Query(  array ('showposts' => 1,
    'post_type' => 'ajde_events',
    'meta_query'=> array(
    array(
    'key' => 'evcal_start_date',
    'meta_compare' => '>',
    'value' => $currentdate,
    'type' => 'DATE',
    )),
    'meta_key' => 'evcal_start_date',
    'orderby' => 'meta_value',
    'order' => 'ASC'
    )
    );

    while ($my_query->have_posts()) : $my_query->the_post();
    $title = get_the_title();
    $date = get_post_meta($post->ID, 'evcal_start_date', true);

    endwhile; 
?>
<div class="featuredtitle"><?php echo $title; ?><br />
<?php echo $date; ?></div>

Je me suis assuré que le formatage de $ currentdate correspond à celui de evcal_start_date. Il est stocké sous le "25/05/2012".

Je ne peux pas garantir que mon client créera toujours des publications dans l'ordre. C'est pourquoi il est impératif d'utiliser le champ personnalisé de la date de début de l'événement.

J'apprécierais vraiment toute aide. Passez un merveilleux week-end du Memorial Day!

2
frankV

Pour trier en fonction d'un champ de date, vous devez convertir la date au format date-heure UNIX. Il est probablement préférable de stocker la date dans un champ personnalisé séparé. Je n'ai jamais eu à mettre cela en place, mais vous

  1. accrocher à save_post
  2. cherche un champ personnalisé avec la date
  3. convertissez cela en date et heure dans un champ personnalisé différent (probablement démarré avec un trait de soulignement pour le masquer de l'interface des champs personnalisés).
  4. Interrogez le champ personnalisé masqué et utilisez-le pour trier.

Il existe également des plugins personnalisés pour la boîte à méta fournis avec un sélecteur de date et la possibilité de stocker des dates au format UNIX.

Pour convertir la date de conversion UNIX en date lisible par l’homme, vous devez en savoir plus sur la fonction PHP strtotime() . Pour reconvertir (si vous stockez la date UNIX et souhaitez l'imprimer dans un format lisible par l'homme), vous utiliserez la fonction date() .

1
mrwweb