web-dev-qa-db-fra.com

Afficher uniquement les événements à venir ou les événements en cours

Je travaille sur cette page d'événement de site Web

http://aishaarab.com/events/

tout fonctionne mais j'ai 2 problèmes:

  1. Je ne parviens pas à afficher uniquement l'événement à venir, ce qui signifie qu'un événement est passé, à ne pas le ferrer ou à ne pas l'afficher.
  2. Lorsque je publie le post_meta sur ma page en utilisant <?php meta('event-end-date'); ?>, mon format de résultat est le 08-12-2014. J'aimerais que le mois soit en lettres comme celle-ci, le 12 août 2014.

voici le code:

<ul class="event_list_view">    

<?php // Let's get the data we need to loop through below
//$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$d = date("m-d-Y");
$today = date('Y-m-d', strtotime('-6 hours')); //define "today" format; note timezone offset of -6 hours
$args = array(
    'post_type' => 'event',
    'posts_per_page' => '3',
    'post_status'  =>  'publish',
    'meta_key' => 'event-start-date',
    'orderby' => 'meta_value_num',
    'order' => 'ASC',
    'meta_query' => array(
    'relation'  =>   'AND',
    array(
            'key' => 'event-end-date',
         'meta-value' => date('Y-m-d', strtotime('-6 hours')), //value of "order-date" custom field
         'compare' => '>=', //show events greater than or equal to today
         'type' => 'CHAR'
        )
    )
);
$the_query = new WP_Query( $args ); ?>


<?php if ( $the_query->have_posts() ) : ?>

    <!-- pagination here -->

    <!-- the loop -->
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>





<li class="clearfix">
<div class="featured_tag"></div>


<?php if ( '' != get_the_post_thumbnail() ) { ?>
<a class="post_img" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
<?php the_post_thumbnail('event-thumbnail'); ?>
</a>
<?php } else { ?>
<a class="post_img" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
<img src="http://aishaarab.com/wp-content/uploads/2014/08/DefaultEvent-125x75.png" alt="" />
</a>
<?php } ?>

<h3><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>

<p class="timing"> 
<span>Start Date: </span><?php meta('event-start-date'); ?><br>
<span>End Date: </span><?php meta('event-end-date'); ?><br>
<span>Time: </span><?php meta('event_time'); ?><br>
</p>

<p class="address"><span>Location :</span> <br><?php meta('event_address'); ?>, <?php meta('event_city'); ?>, <?php meta('event_state'); ?>, <?php meta('event_country'); ?></p>
<div class="clear"></div>
<p class="bottom">
<a class="read_more" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">Read More</a>
</p>

</li>


    <!-- #post-<?php the_ID(); ?> -->

     <?php endwhile; else: ?>  
      <p> 
        <?php _e('Sorry, no events matched your criteria.'); ?>  
      </p>  
      <?php endif; ?> <?php //wp_reset_query(); ?>


</ul>
1
frenchy black

vous comparez l'heure à la mauvaise chaîne horaire:

changement:

'meta-value' => date('Y-m-d', strtotime('-6 hours')), //value of "order-date"

pour ça

'value' => date('m-d-Y', strtotime('-6 hours')), //value of "order-date"

parce que votre chaîne de temps est au format m-d-Y et que vous vérifiez que Y-m-d est faux.

NOTE

si l'astuce ci-dessus ne fonctionne pas, je vous suggère de stocker l'heure dans l'horodatage Unix dans la base de données. s'il vous plaît lisez ces liens pour plus d'informations comment le faire et pourquoi

  1. https://designhammer.com/blog/sorting-events-date-using-wordpress-custom-post-types
  2. http://www.billerickson.net/code/create-a-unix-timestamp-based-on-two-meta-fields/
1
Ravinder Kumar