【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の基本的なことも網羅的に学べるのでおすすめです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です