2022.11.06(更新日: 2022.11.06)
【WordPress】日付一覧ページで年を指定する方法

はじめに

日付一覧ページのテンプレートファイル「date.php」で、
投稿した年を指定する方法について書いていきます。
記事の取得は、get_posts
で行っています(WP_Queryを使うやり方もあります)。
URLに含まれる投稿年の数字を取得する
まずは、get_query_var
でURLに含まれる投稿年の数字を取得します。
<?php $year = get_query_var('year'); ?>
例えば、2020年3月の場合2020
が取得されます。

引数に年を設定する
次に、get_posts();
に渡す$args
に、先ほど取得した$year
を指定します。
<?php
$year = get_query_var('year');
$args = array(
'year' => $year
);
$myposts = get_posts($args);
?>
先ほどの例で言うと、$yearには2020
が入っています。
投稿を表示させる
$myposts
には、投稿年の指定がされた記事情報が入っているので、以下のようにして投稿を表示させます。
<?php
foreach ($myposts as $post) : setup_postdata($post);
// the_title(); でタイトルを表示させたりする
endforeach; wp_reset_postdata();
?>
本記事を書こうと思ったきっかけ
当サイトの日付一覧ページで、2020年3月の日付一覧ページなのに2022年3月の記事も表示されてしまっているということがありました。

原因は、get_posts
に渡す$args
に投稿年を指定していなかったからでした。
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'tag__not_in' => array(116),
'monthnum' => $uri,
);
$myposts = get_posts($args);
本記事で紹介した方法で、
投稿年も指定したら、無事に2020年3月の記事のみが表示されました。

WordPressのおすすめ本
本記事の内容に関連してWordPressのおすすめ本を紹介します。
WordPress 仕事の現場でサッと使える! デザイン教科書
私が、WordPressで自作テーマ作成が出来るようになったきっかけとなった本です(当サイトも自作テーマを使用しています)。
本記事では、get_posts
を使用して投稿の情報を取得していますが、この本ではWP_Query
を使用していました。
WordPressの基本的なことも網羅的に学べるのでおすすめです。
投稿ID : 5415
コメントを残す