Title: query_postsで期間を指定しての記事の表示
Last modified: 2011年1月29日

---

# query_postsで期間を指定しての記事の表示

 *  解決済 [haha taduko](https://ja.wordpress.org/support/users/shimodar/)
 * (@shimodar)
 * [15年、 8ヶ月前](https://ja.wordpress.org/support/topic/query_posts%e3%81%a7%e6%9c%9f%e9%96%93%e3%82%92%e6%8c%87%e5%ae%9a%e3%81%97%e3%81%a6%e3%81%ae%e8%a8%98%e4%ba%8b%e3%81%ae%e8%a1%a8%e7%a4%ba/)
 * こんにちは。
    いつも勉強させていただいております。
 * query_postsを利用して、
    ・あるカテゴリー内の記事で、 ・特定の期間内のものに限定
   して（例：今日以降～2011/12/31まで） 記事のリストを表示させる方法をさがしてい
   ます。
 * Post Expiratorというプラグインを使えば、その記事の公開終了日（非公開か削除）を
   設定できるのですが、この場合は、当該記事が非公開になり、アーカイブ全体を表示さ
   せた場合に記事リストからもれてしまいます。
 * 他の手法をつうじて、なんとか乗り越えられないか探しております。
 * いつも質問ばかりですみません。

7件の返信を表示中 - 1 - 7件目 (全7件中)

 *  [kz](https://ja.wordpress.org/support/users/kz/)
 * (@kz)
 * [15年、 8ヶ月前](https://ja.wordpress.org/support/topic/query_posts%e3%81%a7%e6%9c%9f%e9%96%93%e3%82%92%e6%8c%87%e5%ae%9a%e3%81%97%e3%81%a6%e3%81%ae%e8%a8%98%e4%ba%8b%e3%81%ae%e8%a1%a8%e7%a4%ba/#post-135797)
 * テーマフォルダの functions.php に以下を追加：
 *     ```
       <?php
       global $my_where;
       function my_posts_where( $where ) {
         global $my_where;
   
         return $where . $my_where;
       }
       function my_query_posts( $query ) {
         global $wpdb, $my_where;
   
         $q = wp_parse_args( $query );
         $my_where = '';
   
         if ( $q['date_from'] ) {
           if ( $q['date_to'] )
             $my_where = " AND ( DATE($wpdb->posts.post_date) BETWEEN '" . $q['date_from'] . "' AND '" . $q['date_to'] . "' )";
           else
             $my_where = " AND DATE($wpdb->posts.post_date) >= '" . $q['date_from'] . "'";
         } elseif ( $q['date_to'] ) {
             $my_where = " AND DATE($wpdb->posts.post_date) <= '" . $q['date_to'] . "'";
         }
   
         add_filter( 'posts_where', 'my_posts_where' );
         query_posts( $query );
         remove_filter( 'posts_where', 'my_posts_where' );
       }
       ?>
       ```
   
 * で、`query_posts()`の代わりに`my_query_posts()` を使います。
 *     ```
       // 期間指定
       my_query_posts( 'date_from=2010-07-01&date_to=2011-01-10' );
   
       // 参考：いつから、のみ指定
       //my_query_posts( 'date_from=2010-07-01' );
   
       // 参考：いつまで、のみ指定
       //my_query_posts( 'date_to=2011-01-10' );
       ```
   
 * 他のパラメータ（カテゴリーなど）も `query_posts()` と同様に指定できます。
    例：`
   my_query_posts( 'cat=123&posts_per_page=10&date_from=2010-07-01&date_to=2011-
   01-10' );`
 * ※`my_query_posts()` のループ処理が終わったところで**必ず** `wp_reset_query()`
   してください。
    ※日付の文字列（例：2010-07-01）をどう作るか不明な場合は、また
   質問してください◎
 *  トピック投稿者 [haha taduko](https://ja.wordpress.org/support/users/shimodar/)
 * (@shimodar)
 * [15年、 8ヶ月前](https://ja.wordpress.org/support/topic/query_posts%e3%81%a7%e6%9c%9f%e9%96%93%e3%82%92%e6%8c%87%e5%ae%9a%e3%81%97%e3%81%a6%e3%81%ae%e8%a8%98%e4%ba%8b%e3%81%ae%e8%a1%a8%e7%a4%ba/#post-135800)
 * kzさま
 * いつも教えてくださって本当に感謝しております。(^^ゞ
 * 実現したいことがご教授いただけたコードで無事実現できました！！
 *     ```
       <?php my_query_posts("posts_per_page=3&cat=69&order=DESC&date_from=2011-01-21&date_to=2011-01-29"); ?>
       ここに出力したい内容を記述
       <?php endwhile; endif; wp_reset_query(); ?>
       ```
   
 * ただ一点、
    「本日（today）から2011/12/31まで」といったように、 「今日から」を
   date_fromでどのように記述すればよいかわからないでおります。(__)
 * さらにネット上でしらべてみたのですが、
    [http://futoko.co.jp/zzwp/?p=179](http://futoko.co.jp/zzwp/?p=179)
   [http://ja.forums.wordpress.org/topic/5497?replies=15](http://ja.forums.wordpress.org/topic/5497?replies=15)
 * 上記の内容をあまり理解できておらず、どうにか
    日々変化する「本日の指定」を手作業
   で書き換えることなく、 システムで自動で本日の日付を認識し、date_fromに充てられる
   手法がないものか 模索しております。
 * 引き続き、お付き合いいただけますと幸いでございます。
 *  [KKT](https://ja.wordpress.org/support/users/kvex/)
 * (@kvex)
 * [15年、 8ヶ月前](https://ja.wordpress.org/support/topic/query_posts%e3%81%a7%e6%9c%9f%e9%96%93%e3%82%92%e6%8c%87%e5%ae%9a%e3%81%97%e3%81%a6%e3%81%ae%e8%a8%98%e4%ba%8b%e3%81%ae%e8%a1%a8%e7%a4%ba/#post-135801)
 * 通常のphpの日付関数でダメですか？
 * `date_from=2011-01-21`
    この部分 `date_from=<?php date('Y-m-d'); ?>`
 *  トピック投稿者 [haha taduko](https://ja.wordpress.org/support/users/shimodar/)
 * (@shimodar)
 * [15年、 8ヶ月前](https://ja.wordpress.org/support/topic/query_posts%e3%81%a7%e6%9c%9f%e9%96%93%e3%82%92%e6%8c%87%e5%ae%9a%e3%81%97%e3%81%a6%e3%81%ae%e8%a8%98%e4%ba%8b%e3%81%ae%e8%a1%a8%e7%a4%ba/#post-135802)
 * ご教授くださいましてありがとうございました。
 * すみません！
 * 目標とする設計に大きな見落としがありました。。m(_ _)m
 * 「今日から」という指定に変だと思われた方がいらっしゃったかと思います。
 * これは最終的に実現したいことが以下のようなものであったことからでした
 * ・カテゴリー「サッカー　日本代表戦」に将来予定されている試合の記事を投稿
    ・各
   記事のカテゴリーフィールドで日付を設定　２０１１年１月２９日、２０１１年３月１１
   日など ・query_postsで上記の記事を出力。 　・カテゴリー「サッカー　日本代表選」・
   カテゴリーフィールドの日付を見て、今日以後、特定の日までのものを表示 　・日付
   のフォーマットは　****年**月**日
 * カスタムフィールドの日付情報を基準に並べ替えられるといった情報を
    みつけました。
 * [http://soft.fpso.jp/develop/wordpress/customize/entry_2267.html](http://soft.fpso.jp/develop/wordpress/customize/entry_2267.html)
   
   [http://blog.honeylab.jp/20100609/customfield.html](http://blog.honeylab.jp/20100609/customfield.html)
   [http://ja.forums.wordpress.org/topic/3570?replies=3](http://ja.forums.wordpress.org/topic/3570?replies=3)
 * ここから日付順での並び替えだけでなく、期間を限定していく方法を探しています。
 * わかりにくくて本当にすみません。
 * ご教授いただけますと幸いでございます。
 *  [KKT](https://ja.wordpress.org/support/users/kvex/)
 * (@kvex)
 * [15年、 8ヶ月前](https://ja.wordpress.org/support/topic/query_posts%e3%81%a7%e6%9c%9f%e9%96%93%e3%82%92%e6%8c%87%e5%ae%9a%e3%81%97%e3%81%a6%e3%81%ae%e8%a8%98%e4%ba%8b%e3%81%ae%e8%a1%a8%e7%a4%ba/#post-135803)
 * なんか、スケジュール系のプラグイン使ってしまったほうが便利なような。
 * それと、ちょっと、最終的な目標が最初と違う気がするのでもうちょっと整理してほうが
   よろしいかと。
 * kzさんのように、コードを考えてくださっている場合に、やりなおしになっちゃうのが
   もったいないです。
 *  [kz](https://ja.wordpress.org/support/users/kz/)
 * (@kz)
 * [15年、 8ヶ月前](https://ja.wordpress.org/support/topic/query_posts%e3%81%a7%e6%9c%9f%e9%96%93%e3%82%92%e6%8c%87%e5%ae%9a%e3%81%97%e3%81%a6%e3%81%ae%e8%a8%98%e4%ba%8b%e3%81%ae%e8%a1%a8%e7%a4%ba/#post-135805)
 * #日付のフォーマットが「２０１１年１月２９日」だと諸々アレなので
    #内部の meta_value
   の値は「yyyy-mm-dd」な感じで設計しておくと幸せになれます。 #表示は ２０１１年
   １月２９日 でも 二千十一年睦月二十九日 でも何でも良いです。
 * ■日付のカスタムフィールドを
    key:date value:yyyy-mm-dd の形式 とした場合。
 * functions.php に以下を追加：
 *     ```
       global $my_where;
   
       function my_posts_where( $where ) {
         global $my_where;
         return $where . $my_where;
       }
   
       function my_query_posts( $query ) {
         global $wpdb, $my_where;
   
         $q = wp_parse_args( $query );
         $my_where = '';
   
         if ( ! empty( $q['meta_key'] ) && ! empty( $q['meta_between'] ) ) {
           $dates = explode( ',', $q['meta_between'] );
           if ( 2 == count( $dates ) ) {
             foreach( $dates as &$date )
       	if ( 'TODAY' == strtoupper( $date ) )
       	  $date = date( 'Y-m-d' );
   
             $my_where = $wpdb->prepare( " AND $wpdb->postmeta.meta_value BETWEEN %s AND %s ", $dates[0], $dates[1] );
           }
         }
   
         add_filter( 'posts_where', 'my_posts_where' );
         query_posts( $query );
         remove_filter( 'posts_where', 'my_posts_where' );
       }
       ```
   
 * 表示したいところで：
 *     ```
       my_query_posts( 'meta_key=date&meta_between=today,2011-12-31' );
         // ここでループ処理
       wp_reset_query();
       ```
   
 *  トピック投稿者 [haha taduko](https://ja.wordpress.org/support/users/shimodar/)
 * (@shimodar)
 * [15年、 8ヶ月前](https://ja.wordpress.org/support/topic/query_posts%e3%81%a7%e6%9c%9f%e9%96%93%e3%82%92%e6%8c%87%e5%ae%9a%e3%81%97%e3%81%a6%e3%81%ae%e8%a8%98%e4%ba%8b%e3%81%ae%e8%a1%a8%e7%a4%ba/#post-135809)
 * kvexさま kzさま
 * ありがとうございました！
    ご教授いただいたコードで動作確認がとれました！！
 * 日付による期間指定もできるようコードもご配慮たまわりまして
    ありがとうございま
   した。（例：meta_key=date&meta_between=2011-01-25,2011-12-31）
 * 本日以前の投稿日時をもつ記事たちをチェックボックスによる
    条件分岐で手作業で外
   していくしか方法がないかと思っていたので 本当に大きな飛躍でした。
 * ありがとうございました。m(__)m
 * お二方のサイトを拝見しました。
    またいろいろご相談にのっていただければと思います。
 * 感謝を込めて。

7件の返信を表示中 - 1 - 7件目 (全7件中)

 トピック「query_postsで期間を指定しての記事の表示」には新たに返信することはでき
ません。

## タグ

 * [query_posts](https://ja.wordpress.org/support/topic-tag/query_posts/)
 * [時限](https://ja.wordpress.org/support/topic-tag/%e6%99%82%e9%99%90/)
 * [期間限定](https://ja.wordpress.org/support/topic-tag/%e6%9c%9f%e9%96%93%e9%99%90%e5%ae%9a/)

 * フォーラム: [使い方全般](https://ja.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 7件の返信
 * 3人の参加者
 * 最後の返信者: [haha taduko](https://ja.wordpress.org/support/users/shimodar/)
 * 最後の活動: [15年、 8ヶ月前](https://ja.wordpress.org/support/topic/query_posts%e3%81%a7%e6%9c%9f%e9%96%93%e3%82%92%e6%8c%87%e5%ae%9a%e3%81%97%e3%81%a6%e3%81%ae%e8%a8%98%e4%ba%8b%e3%81%ae%e8%a1%a8%e7%a4%ba/#post-135809)
 * 状態: 解決済

## トピック

### 人気のトピック

### 返信がないトピック

### サポート関連ではないトピック

### 解決済みのトピック

### 未解決のトピック

### すべてのトピック
