WordPressで、◯日前までの更新データだけを取得したい

構築・開発WordPress

投稿日を起点に何日前からの記事取得あれば特に問題なかったのですが、今回は更新している記事だけを何日前から取得するという内容になります。

スポンサーリンク

更新日順に並び替え

まずは、単純にソードだけ 更新順にしてみます。

$args = array(
  'post_type' => 'news',
  'posts_per_page' => -1,
  'orderby' => 'modified'
);

これだと、何日前からとかの指定がなく、全件取得します。

日付パラメータで、after を追加

次に「after」を使って、指定日以降のデータを取得します。

$args = array(
  'post_type' => 'news',
  'posts_per_page' => -1,
  'orderby' => 'modified',
  'date_query' => array(
    array(
      'after' => date_i18n("Ymd", strtotime("now -7 day"))
    )
  )
);

関数リファレンス/WP Query – WordPress Codex 日本語版

after (文字列/配列) – この日付より後の投稿を取得。strtotime() 互換の文字列、または ‘year’, ‘month’, ‘day’ の値を持つ配列を指定可能

これで出来るものだと思っていたら、投稿日から7日前までの記事が更新順に並んだだけで上手くいきませんでした。(よく考えれば当たり前)

解決策

全件を取得してから、if文で判定をしたり、直接SQL文を作ろうかと思ってマニュアルを見ていた所、「column」というクエリ対象とするカラムを選択できることが分かりました。

columnに対して、更新日付のカラム「post_modified」を指定することで、取得段階で7日前までの更新記事だけ取得することが出来ました。

$args = array(
  'post_type' => 'news',
  'posts_per_page' => -1,
  'orderby' => 'modified',
  'date_query' => array(
    array(
      'after' => date_i18n("Ymd", strtotime("now -7 day")),
      'column' => 'post_modified'
    )
  )
);

ググっても同様の事例が出てこなかったので、備忘録も兼ねてメモ!!
もしかして知らないだけで、一般的な内容なのかも。。。

コメント

スポンサーリンク
タイトルとURLをコピーしました