0

虽然以下代码适用于 WordPress,但我的问题更多的是关于一般的 PHP 循环。

我想获得最近 7 天的帖子。我只想得到最近 7 天的帖子。如果某天没有任何帖子,它应该跳到第二天。

我正在使用以下循环来获取最近 7 天的帖子,但问题是如果一天没有帖子,它只会循环过去 7 天,无论是否有任何帖子。

所以,我试图仅在有帖子的情况下扩展 $i 值,但如果我将它放在 if 条件中,它将运行无限次。感谢您对此的任何帮助。

$day = date('j');
while( $i <= 7){
    query_posts('day='$day);    
    if (have_posts()){  
        //list posts.
    }   
    $i++;
    $day--;
}
4

3 回答 3

1

您可以为循环设置最大值并按日期而不是按天查询:

$date = date('Y-m-d');
$maxAttempts=100;
$postCount=0;
while( $i <= $maxAttempts && $postCount <= 7 ){
    query_posts('date='$date);    
    if (have_posts()){  
        //list posts.
        $postCount++;
    }   
    $i++;
    $date = date('Y-m-d', strtotime($date .' -1 day'));
}
于 2013-09-27T19:55:20.413 回答
0

尝试这个...

$day = date('j');
$post_days_count = 0;
while( $post_days_count < 7){
    query_posts('day='$day);    
    if (have_posts()){
        $post_days_count++;
        //list posts.
    }   
    $day--;
}
于 2013-09-27T19:36:14.410 回答
0

您可以将循环更改为仅$i在找到帖子时才增加,这意味着循环将运行直到找到 7 个帖子。一定要处理永远找不到7个帖子的情况。

于 2013-09-27T19:36:16.703 回答