循环中的WordPress the_date只返回一个帖子

时间:2013-11-22 02:29:03

标签: wordpress date loops slider posts

我有一个自定义模板,它使用循环来获取帖子信息以构建自定义滑块,并且它运行正常。客户端提出了一项新要求,即他们只希望过去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()吗?

5 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,请尝试使用

<?php the_time(); ?>

答案 1 :(得分:2)

这可能是您的问题 - 根据特别说明&#39;关于http://codex.wordpress.org/Template_Tags/the_dateSprites文档:

  

特别注意:当在同一天下发布的页面上有多个帖子时,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正在工作?

https://wordpress.stackexchange.com/questions/166751/post-doesnt-show-date-if-theres-another-post-with-the-same-date

请参阅上面链接中凯撒的答案。