サポート » 使い方全般 » 年をまたぐ『現在の週の投稿のみを表示』について

  • テーマ:Twenty_Ten、PHP5.3.5、MySQL5.5.9 ブラウザsafari5.0.5

    http://wpdocs.sourceforge.jp/テンプレートタグ/query_posts内
    日時引数/現在の週の投稿のみを表示に記載されている
    $week = date(‘W’); $year = date(‘Y’); query_posts( ‘year=’ . $year . ‘&w=’ . $week );
    を使用して現在の週の投稿のみを表示させています。

    年をまたぐ週も正常に表示させたい場合はどのように変更すればよいのでしょうか。

    2011年、2012年で説明すると、

    日付を12/31にした場合、
    $yearが2011年、$weekが52週目となり、
    2011/12/31(土)までは表示されますが、2012/1/1は表示されません。

    日付を2012/1/1に変更した場合、
    $yearが2012年、$weekが52週目となり、現在の週の投稿は表示されません。

    日付を2012/1/2に変更した場合、
    $yearが2012年、$weekが01週目となり、2012/1/2からの投稿が表示されます。

    現在週頭はWP管理画面から月曜日としています。
    なにかヒントとなるような事や参考サイト等を教えていただけますと幸いです。

    何卒よろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    yasuuuco199010さん、こんにちは。

    現在の週の投稿ということは、言い換えれば最大で過去7日分の投稿を取得すればいいわけです。

    となると、CODEXのquery_postsの日時引数にある例、最近30日間の投稿を表示は参考になるかと思います。

    ここで、過去何日間の投稿を取得すれば良いかは、

    date_i18n( 'w' );

    とすると、日曜日だと0で、土曜日だと6となるので、この数字から導きだせばよいでしょう。

    また、単に例示のコードでは、すべてにおいて日付の制限がかかってしまい、他の部分に影響が出る可能性があります。
    ですので、

    $current_week_posts = new WP_Query();

    などとし、日付の制限を加える関数内でのオブジェクトの照合による条件分岐を行う必要があります。

    その他、気をつけていただきたい点の1つに、WordPressの時刻計算は、国際標準時を元に行っているため、普通にdateやstrtotimeを使うと時差分ずれることになります。
    date_i18nやcurrent_timeなどの関数を使い、時差による影響がないようにしてください。

    トピック投稿者 yasuuuco199010

    (@yasuuuco199010)

    jim912さま、おはようございます。

    ご丁寧にご回答ありがとうございます。
    一度提示いただいた内容で私なりに挑戦してみたいと思います。

    また何か分からない事があればご質問させていただく事もあるかと思いますが、
    お暇な時にご教授いただければ幸いです。

    ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「年をまたぐ『現在の週の投稿のみを表示』について」には新たに返信することはできません。