我如何筛选出事件的帖子谁的日期比当前日期的? 我当前的代码添加了一个过期类的事件,如果该事件已经过期,但监守我需要显示未来5个即将到来的职位当前的代码实际上显示没有事件的帖子在所有...这里是我的代码....
<?php
wp_reset_query();
query_posts(array('post_type' => 'events',
'showposts' => 5,
'meta_key'=>'event_date',
'orderby' => 'meta_value',
'order' => ASC));
?>
<?php while (have_posts()) : the_post(); ?>
<?php
$eventDate = DateTime::createFromFormat('Ymd', get_field('event_date'));
$currentDate = new DateTime();
?>
<li class="<? if ($eventDate < $currentDate) { echo "expired"; } ?>">
<h4><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4>
<span class="date"><strong>Event Date:</strong> <? echo $eventDate->format('d/m/Y'); ?></span></li>
<?php endwhile;?>
恳求帮助别人:(
OK回答你的问题。 您可以比较使用meta_value日期,但记住,这些日期必须是在MySQL格式YYYY-MM-DD在数据库中进行比较。 所以,你的自定义字段需要在该格式,或者您需要在使用前重新格式化你的代码。 下面是关于WordPress的堆栈上,一个良好的线程;
https://wordpress.stackexchange.com/questions/18303/fail-to-compare-dates-in-meta-query
我没有测试这一点,但它应该指向你在正确的方向;
$eventDate = date('Y-m-t', get_field('event_date'));
$currentDate = date('Y-m-t');
$args = array(
'post_type' => 'events',
'posts_per_page' => '-1',
'orderby' => 'meta_value',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => $eventDate,
'value' => $currentDate,
'compare' => '>',
'type' => 'DATE'
)
)
);
另一种方式来做到这一点,当然就是给所有的帖子拉进你的查询,建立一个计数器并显示出前五,其满足您的标准;
<?php
$counter = 0;
query_posts(array('post_type' => 'events',
'posts_per_page' => -1,
'meta_key'=>'event_date',
'orderby' => 'meta_value',
'order' => ASC));
while (have_posts()) : the_post();
$eventDate = DateTime::createFromFormat('Ymd', get_field('event_date'));
$currentDate = new DateTime();
if ( ($eventDate > $currentDate) && $counter<5) : ?>
<li class="<? if ($eventDate < $currentDate) { echo "expired"; } ?>">
<h4><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4>
<span class="date"><strong>Event Date:</strong> <? echo $eventDate->format('d/m/Y'); ?></span></li>
<?php
$counter++;
endif; ?>