フォーラム

[解決済み] 未来の投稿がある上で現在の時間から先の物だけ表示したい。 (5 件の投稿)

  1. HAL2000
    メンバー
    1 year前の投稿 #

    映画館のWebサイトの上映スケジュールを作っています。

    3/16 11:00
    3/16 16:00
    3/16 19:00

    とエントリーがあるなかで11時過ぎに見たら16時と19時のエントリが表示されるようにしたいと思っております。(途中入場不可なのでこのほうが親切かと思いまして)

    <?php $current_year = date('Y');$current_month = date('m');$current_day = date('d');$current_hour = date('G'); ?>
    
    <?php query_posts("time hour>=$current_hour&day=$current_day&monthnum=$current_month&year=$current_year&order=ASC&posts_per_page=10&cat=1&orderby=ID&orderby=time&post_status=publish,future"); ?>

    本日のエントリのみに絞ることは出来ています。
    上記ではdate('G')としましたが、H,h,gも試しましたが、変化有りません。

    何卒宜しくお願いします。

  2. kvex
    メンバー
    1 year前の投稿 #

    CODEX によると、以下のようにする的なことが書いてあります。

    // Create a new filtering function that will add our where clause to the query
    function filter_where( $where = '' ) {
    	// posts for March 1 to March 15, 2010
    	$where .= " AND post_date >= '2010-03-01' AND post_date < '2010-03-16'";
    	return $where;
    }
    add_filter( 'posts_where', 'filter_where' );
    query_posts( $query_string );
  3. HAL2000
    メンバー
    1 year前の投稿 #

    kvexさんありがとうございます。

    ですが、ご呈示のコードですと。
    2010/3/1〜2010/3/16の間のポストを表示させるpost_date であり、
    hour単位ではありませんね。

  4. kvex
    メンバー
    1 year前の投稿 #

    う~ん・・・ヒントだという意味だったのですが。少しは工夫してみましょうよ。

    function filter_where( $where = '' ) {
    	$where .= " AND post_date > '2011-03-12 12:00:00'";
    	return $where;
    }

    とかでその時間以降になります。
    よって、今の時間を与えてやる部分を作れば良いです。

  5. HAL2000
    メンバー
    1 year前の投稿 #

    解決しました。深く考えすぎていました。

    時間を経過した物は「未来の投稿」ではないので、
    (投稿の日付は上映開始時間にしている)
    当日の投稿に絞った上でpost_status=futureに限定することで実現できました。

    <?php
    date_default_timezone_set('Asia/Tokyo');
    $current_year = date('Y');
    $current_month = date('m');
    $current_day = date('d');
    ?>
    
    <?php query_posts("day=$current_day&monthnum=$current_month&year=$current_year&order=ASC&posts_per_page=10&cat=1&orderby=time&post_status=future"); ?>

    元のコードではGMTが帰ってきたので
    timezoneをAsia/Tokyoにして+9時間のJSTとするようにしました。

    副産物として下記にJST24時間表示を返してくるコード。

    <?php
    date_default_timezone_set('Asia/Tokyo');
    $current_time = date('H:i:s');
    ?>
    
    <?php print($current_time); ?>

返信

ログイン しなければ投稿できません。

About this Topic

Tags

タグ はまだありません。