WordPress | 「投稿日(公開日)」を基準にして期間を区切って記事一覧を表示する方法

PHP
スポンサーリンク

「固定の期間(例: 11月1日〜10日)」で記事一覧を表示したい場合は、WordPress の WP_Querydate_query を使うのが王道です。


コード例:2014年11月1日〜11月10日の記事一覧

page.phparchive.php、あるいは専用テンプレートに以下を記述します。

<?php
$args = array(
  'post_type'      => 'post', // 投稿タイプ
  'posts_per_page' => 10,     // 表示件数
  'orderby'        => 'date',
  'order'          => 'DESC',
  'date_query'     => array(
    array(
      'after'     => '2014-11-01',
      'before'    => '2014-11-10',
      'inclusive' => true, // 範囲を含める
    ),
  ),
);

$query = new WP_Query($args);

if ( $query->have_posts() ) :
  while ( $query->have_posts() ) : $query->the_post(); ?>
    <article>
      <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
      <p>公開日: <?php echo get_the_date('Y年n月j日'); ?></p>
      <?php the_excerpt(); ?>
    </article>
  <?php endwhile;
else :
  echo '<p>指定期間に記事はありません。</p>';
endif;

wp_reset_postdata();
?>
PHP

応用ポイント

  • 期間を変えるafterbefore の日付を変更するだけ
  • 月単位で一覧after を「2014-11-01」、before を「2014-11-30」に設定
  • 週単位で一覧after を「monday this week」、before を「sunday this week」に設定可能
  • ショートコード化functions.php に登録すれば、固定ページや投稿本文に [posts_by_date after="2014-11-01" before="2014-11-10"] と書くだけで一覧を出せます

まとめ

  • 固定期間の記事一覧は date_query を使う
  • afterbefore を指定すれば柔軟に期間を設定可能
  • ショートコード化すれば管理画面からも簡単に利用できる
PHPWeb
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました