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

PHP
スポンサーリンク

特定の固定ページに「指定した期間の記事一覧」を表示する方法を整理します。


方法1: 固定ページ用テンプレートに直接書く

固定ページに専用テンプレートを作成して、WP_Querydate_query を使います。

例: page-period.php を作成

<?php
/* Template Name: 固定期間記事一覧 */

get_header();

$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() ) :
  echo '<h2>2014年11月1日〜10日の記事一覧</h2>';
  while ( $query->have_posts() ) : $query->the_post(); ?>
    <article>
      <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
      <p>公開日: <?php echo get_the_date('Y年n月j日'); ?></p>
      <?php the_excerpt(); ?>
    </article>
  <?php endwhile;
else :
  echo '<p>指定期間に記事はありません。</p>';
endif;

wp_reset_postdata();

get_footer();
PHP

→ 管理画面の固定ページ編集で「テンプレート」からこの 固定期間記事一覧 を選べば、そのページに一覧が表示されます。


方法2: ショートコードを使う

固定ページ本文にショートコードを埋め込む方法。functions.php に以下を追加します。

function posts_by_date_range($atts) {
  $atts = shortcode_atts(array(
    'after' => '2014-11-01',
    'before' => '2014-11-10',
  ), $atts);

  $args = array(
    'post_type' => 'post',
    'date_query' => array(
      array(
        'after'     => $atts['after'],
        'before'    => $atts['before'],
        'inclusive' => true,
      ),
    ),
    'orderby' => 'date',
    'order'   => 'DESC',
  );

  $query = new WP_Query($args);
  $output = '<h2>記事一覧</h2>';
  if ($query->have_posts()) {
    while ($query->have_posts()) {
      $query->the_post();
      $output .= '<p><a href="'.get_permalink().'">'.get_the_title().'</a>('.get_the_date('Y年n月j日').')</p>';
    }
  } else {
    $output .= '<p>指定期間に記事はありません。</p>';
  }
  wp_reset_postdata();
  return $output;
}
add_shortcode('posts_by_date', 'posts_by_date_range');
PHP

→ 固定ページ本文に

[posts_by_date after="2025-11-01" before="2025-11-10"]
PHP

と書けば、その期間の記事一覧が表示されます。


まとめ

  • テンプレート方式 → デザインやレイアウトを自由に作り込みたいときに便利
  • ショートコード方式 → 管理画面から期間を変えて簡単に使いたいときに便利
PHPWeb
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました