web-dev-qa-db-ja.com

過去x時間以内に更新または公開された投稿を取得する

さて、私は過去x時間以内に投稿された投稿を得ようとしています、オプションは8、24または72時間です。私はajax経由で私のfeatureHandler.phpに変数を渡し、それから投稿を返しています。

$vars = $_GET['vars'];
$time = $vars[0];
$order = $vars[1];

if ($time == 8 ) {
    function filter_where($where = '') {

        //posts in the last 8 Hours
        $where .= " AND post_date > '".date('Y-m-d H:i:s', strtotime('-8 hours'))."'";
        return $where;
    }
    add_filter('posts_where', 'filter_where', 10, $time);
} elseif ($time == 24) {
    function filter_where($where = '') {

        //posts in the last 24 Hours
        $where .= " AND post_date > '".date('Y-m-d H:i:s', strtotime('-24 hours'))."'";
        return $where;
    }
    add_filter('posts_where', 'filter_where', 10, $time);
} elseif ($time == 72) {
    function filter_where($where = '') {

        //posts in the last 72 Hours
        $where .= " AND post_date > '".date('Y-m-d H:i:s', strtotime('-72 hours'))."'";
        return $where;
    }
    add_filter('posts_where', 'filter_where', 10, $time);
}

?>

<div class="article-wrapper">
<?php

query_posts(array(
       'post__not_in' => get_option('sticky_posts'), 
));

$itemCount = 0;

while ( have_posts() ) : the_post();

これは準作業です、私が作成したばかりの投稿が24または72にしか表示されないことを除いて、私は思います、しかし$ time == 8の場合にはそうではありません、なぜですか?そして、どのように私はこのコードをより効率的にすることができますか?

どうもありがとうございます。

1
Joshua Richards

これは、GETパラメータ?time = [integer]を想定した短いバージョンです(たとえば、?time = 8)。

add_filter('posts_where', 'filter_where', 11);
function filter_where($where = '') {
    if(isset($_GET['time'])){
        $time = $_GET['time'];
        $time=(int)$time; // only allow integers
        if(in_array($time,array(8,24,72))){
            $where .= " AND post_date > '".date('Y-m-d H:i:s', strtotime('-".$time." hours'))."'";
        }
    }
    return $where;
}
0
birgire