【问题标题】:How to Configure Events List in Wordpress to Erase Event Once Date is Past如何在 Wordpress 中配置事件列表以在日期过去后擦除事件
【发布时间】:2010-12-19 16:53:59
【问题描述】:

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

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

有谁知道如何用我现有的代码来改变它?

<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-->

感谢您的帮助!

【问题讨论】:

  • 不是投票结束,但您可能会发现Wordpress Stack Exchange site 是 WP 问题的有用资源。
  • 这段代码没有显示任何删除,你确定这是处理清理事件的正确代码吗?这是您尝试自定义的插件吗?
  • 一旦事件日期的午夜到来,事件就会消失......我正在使用 Flutter 设置新事件。但是这段代码只是在index.php文件中。

标签: php events wordpress sorting


【解决方案1】:

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

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

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

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

【讨论】:

  • 做到了!谢谢!你摇滚,理查德!
  • 其实并没有完全做到。我在本地测试,当我将它上传到远程服务器时,我得到了不同的结果。您可以在标题即将发生的事件下方的中间列中看到它。如您所见,它在 18 日拉起昨天的事件,我想在昨晚午夜之前消失,即 19 日开始。那有意义吗?有什么办法可以改变吗?这才是我真正需要改变的……
  • 没关系...明白了。一件小事必须改变。我不需要>=,而是需要将其保持在>。再次感谢。
  • 嗨, >= 只是作为您发现的更改日期(...)的“替代方案”。也与发布到您的问题的其他 cmets 有关。这不会删除实际事件,它只是避免在查询中获取它们。如果你也想删除它们,你需要做一些不同的事情。但是,在您的问题中,您建议当前的解决方案“部分有效”,因此假设您只是不想获取它们
【解决方案2】:

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

<?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') 及以后的旧事件。

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

【讨论】:

  • 是的,一旦活动当天的午夜到来,活动就会消失。我想找到一些代码,将其在活动当天的持续时间内延长到第二天的午夜。所以,如果活动是在 12 月 24 日,我希望活动一直持续到 12 月 25 日凌晨 12 点。这有意义吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多