Показывать только предстоящие или текущие события
Я работал над страницей событий этого веб-сайта
Все работает, но у меня есть 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>
1
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
Author: Ravinder Kumar, 2014-08-17 23:24:12