der Gegenwart

最新1日分の記事を表示する

<?php
global $wpdb;
$limit = 10;
$days = 1;

$request = "SELECT * FROM $wpdb->posts "."WHERE post_status = 'publish' AND post_type = 'post' "."ORDER BY post_date DESC LIMIT $limit";
$posts = $wpdb->get_results($request);

if($posts):
    $recent_date = date('Ymd',strtotime($posts[0]->post_date));
    foreach ($posts as $post):
        $post_date = date('Ymd',strtotime($post->post_date));
        if($post_date == $recent_date):
            setup_postdata($post);
?>
//記事の表示内容を記述
<?php
        endif;
    endforeach;
endif;
?>

以下、上の記述の簡単な説明。

  1. データベースから最新10件*1の投稿を取得して $posts にぶちこむ
  2. 最新の記事、すなわち $posts[0] の post_date を strtotime 関数と date 関数を使って「20081210」みたいな形式に変換して変数 $recent_date に格納
  3. foreach 関数使って $recent_date とその他の投稿データの日付を比較しつつ*2 、$recent_date と同じ日付の投稿データがあったら setup_postdata() したあとで the_title() やら何やらで表示

上記のコードをindex.php辺りに書くと、私のサイトのように最新1日分の記事がトップページに表示される。もっとスマートに出来るんじゃないかなぁ、とか思ったりもするので、各自頑張ってください(謎)。

  1. ここで10件にしたのは、一日にどんなに更新したって10回はいかないだろう、という経験則から。1日100回更新することがある人は当然10じゃ足りないので$limitの値を適宜変更すること。
  2. 当然比較するための日付データも strtotime 関数と date 関数を使って形式変換しないとダメ。