我有一个自定义模板,它使用循环来获取帖子信息以构建自定义滑块,并且它运行正常。客户端提出了一项新要求,即他们只希望过去2天内的帖子显示在滑块中。
在循环中我添加了以下if语句:
$today = date('j');
if ( have_posts() ) :
while ( have_posts() ) :
the_post();
// Added the below code
if (the_date('j','','',FALSE)>($today-3)) :
// Builds slide
endif;
// End of new code
endwhile;
else:
?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php
endif; ?>
当添加此代码时,循环仅显示单个帖子,第一个帖子被发现满足此IF语句的条件,并且不显示任何其他帖子。我手动更改了日期,以便至少3个帖子在过去两天内都有发布日期,但仍然没有。
当我取消注释以上行时,代码工作正常并将所有帖子拉入幻灯片中。
我无法使用“posts_where”过滤器,因为这会影响页面上的其他帖子(想象一下页面顶部的滑块和滑块下方的帖子)。
我有什么遗失的吗?或者不能像这样使用the_date()吗?
答案 0 :(得分:3)
我遇到了同样的问题,请尝试使用
<?php the_time(); ?>
答案 1 :(得分:2)
这可能是您的问题 - 根据特别说明&#39;关于http://codex.wordpress.org/Template_Tags/the_date的Sprites
文档:
特别注意:当在同一天下发布的页面上有多个帖子时,the_date()仅显示第一个帖子的日期(即the_date()的第一个实例)。要重复在同一天发布的帖子的日期,您应该使用模板标记the_time()或get_the_date()(自3.0起)以及特定于日期的格式字符串。 用于添加管理界面中设置的日期。
因此请使用the_date
,如下所示:http://codex.wordpress.org/Template_Tags/get_the_date
例如
get_the_date
等
答案 2 :(得分:1)
不要问为什么,如果你能解释为什么请在评论中做,但必须做这样的事情:
$posts_date = $post->post_date;
$two_days_ago = strtotime(date('Y-m-d H:i:s') . ' -2 day');
if ($posts_date >(date('Y-m-d H:i:s', $two_days_ago))) :
//process code
endif;
答案 3 :(得分:1)
这对我有用
the_time('d/m/Y');
答案 4 :(得分:-1)
使用获取日期功能。
<?php echo get_the_date(); ?>
为什么the_date不起作用但是get_the_date正在工作?
请参阅上面链接中凯撒的答案。