特定の固定ページに「指定した期間の記事一覧」を表示する方法を整理します。
方法1: 固定ページ用テンプレートに直接書く
固定ページに専用テンプレートを作成して、WP_Query の date_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と書けば、その期間の記事一覧が表示されます。
まとめ
- テンプレート方式 → デザインやレイアウトを自由に作り込みたいときに便利
- ショートコード方式 → 管理画面から期間を変えて簡単に使いたいときに便利


