Показывать только предстоящие или текущие события


Я работал над страницей событий этого веб-сайта

Http://aishaarab.com/events/

Все работает, но у меня есть 2 проблемы:

  1. Я не могу заставить его показывать только предстоящее событие, означающее, что событие прошло, чтобы не показывать его или не отображать.
  2. Когда я вывожу post_meta на свою страницу, используя <?php meta('event-end-date'); ?> мой формат результатов 08-12-2014, я бы хотел, чтобы месяц был таким, как 12 августа, 2014.

Вот код:

<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>
Author: Pieter Goosen, 2014-08-17

1 answers

Вы сравниваете время с неправильной строкой времени:

Изменение:

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

К этому

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

Потому что ваша строка времени находится в формате m-d-Y, и вы сверяете ее с Y-m-d, что неверно.

ПРИМЕЧАНИЕ

Если описанный выше трюк не сработает, я предлагаю вам хранить время в метке времени unix в базе данных. пожалуйста, прочтите эти ссылки для получения дополнительной информации о том, как это сделать, и почему

  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
Author: Ravinder Kumar, 2014-08-17 23:24:12