如何在Wordpress中配置事件列表以在日期过去后删除事件

时间:2010-12-19 16:54:00

标签: php events wordpress sorting

我目前有一些代码设置来显示管理员根据事件日期设置的即将发生的事件。即将到来的活动按照下一个即将举行的活动进行排序,从顶部开始,然后再下降。我把它限制在两个。

但是,当一天的开始到来时(例如事件日期的午夜),事件就会消失。 我希望活动仍然显示在第二天的午夜(例如第二天的开始)。现在,事件正在消失,事件发生的第二天......

有没有人知道如何使用我当前的代码更改此内容?

<div class="boxer events">
<h3>Upcoming Events</h3>
<?php
//The Query
query_posts(array(
'posts_per_page' => 2,
'meta_key' => 'event_date',
'meta_value' => date('Y-m-d'),
'meta_compare' => '>',
'orderby' => 'meta_value',
'order' => 'ASC'
));

//The Loop
$count = 0;
while ( have_posts() ) : the_post(); $count++;
//The Title
$title = $post->post_title;
$event_datee = get_post_meta($post->ID, 'event_date', true);
?>
<dl>
<dt><a title="<?php echo $title; ?>" href="<?php the_permalink(); ?>"><?php echo $title; ?></a></dt>
<div class="postdate">
<div class="month m-<?php $dtes = get('event_date'); $timestamp = strtotime($dtes); echo date('n', $timestamp); //month ?>"></div>
<div class="day d-<?php $dtes = get('event_date'); $timestamp = strtotime($dtes); echo date('d', $timestamp); //day ?>"></div>
<div class="year y-<?php $dtes = get('event_date'); $timestamp = strtotime($dtes); echo date('Y', $timestamp); //year ?>"></div>
</div>
<dd><?php the_excerpt(); ?></dd>
</dl>
<?php endwhile; ?>
</div><!--end boxerevents-->

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

查询的比较是查看今天的日期date('Y-m-d')

相反,你可以告诉它明天使用,因为它可以使用昨天的日期让事情发生。尝试用date(...)替换date('Y-m-d', strtotime('-1 day'))

注意:我认为你需要在这里使用-1,但它可能需要+1代替。

我还认为您可能只需将'meta_compare' => '>',替换为'meta_compare' => '>=', ,请注意&gt; 已更改为&gt; = 在这种情况下,您只需保留date(...)部分,但这取决于此插件如何存储日期。

答案 1 :(得分:0)

我的代码中的最佳猜测是这个区域:

<?php
//The Query
query_posts(array(
'posts_per_page' => 2,
'meta_key' => 'event_date',
'meta_value' => date('Y-m-d'),
'meta_compare' => '>',
'orderby' => 'meta_value',
'order' => 'ASC'
));

它看起来像是获取事件(并没有真正删除它们),因此它不会让您只查看当前date('Y-m-d')及以后的旧事件。

但这又是一个有根据的猜测,在这个'事件'/插件中没有背景。