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 に答える