我看到一个简单的7天活动日历的请求,它总是从今天开始。
我有一个名为opening time的自定义元框,它可以获得YYYY-MM-DD输入。
目前,这是我所拥有的,它不起作用。
它只输出2011年11月17日,今天是2011年11月11日,所以这是错误的。它还必须有一个php错误,因为没有任何博客输出。
提前谢谢你。
<ul id="days_header">
<?php
$today = date("o-m-d");
$future = strtotime ( \'+6 days\' , strtotime ( $today ) ) ;
$future = date ( \'o-m-d\' , $future );
$event_query = new WP_Query(
array(
\'post_type\' => \'event\',
\'meta_key\' => \'opening_time\',
\'orderby\' => \'meta_value\',
\'order\' => \'asc\',
\'meta_query\' => array(
array(
\'key\' => \'opening_time\',
\'value\' => array($today,$future),
\'compare\' => \'BETWEEN\',
\'type\' => \'DATE\'
)
)
)
);
?>
<?php for ($i=0; $i<7; $i++):
$thedate = strtotime ( \'+\'.$i.\' day\' , strtotime ( $today ) ) ;
$thedate = date ( \'o-m-d\' , $thedate ); ?>
<li>
<?php echo $thedate; ?>
<?php if ($event_query->have_posts()) : while ($event_query->have_posts()) : $event_query->the_post();?>
<?php if(meta(\'opening_time\') == $thedate) :?>
<?php the_title(); ?>
<?php else: ?>
No Events Today
<?php endif; ?>
</li>
<?php endwhile; endif; rewind_posts(); ?>
SO网友:Steve Grunwell
我过去使用BETWEEN
与元查询进行比较。如果将元查询替换为>=
和<=
比较:
\'meta_query\' => array(
array(
\'key\' => \'opening_time\',
\'value\' => $today,
\'compare\' => \'>=\',
\'type\' => \'DATE\'
),
array(
\'key\' => \'opening_time\',
\'value\' => $future,
\'compare\' => \'<=\',
\'type\' => \'DATE\'
)
)
根据您的应用程序,您可能希望通过从一条或两条语句中删除“或等于”来稍微调整结果(目前这是非常宽容的)。
至于PHP错误,您提供的代码不会以endfor
. 你检查过你的PHP错误日志了吗?您也可以尝试打开WP_DEBUG
在wp配置中。php文件。