WordPressで過去の同月の記事一覧を取得する方法

WordPressの過去記事の有効活用法として、過去の同月、同日などの記事一覧を表示する方法がある。10年日記という紙の日記帳があるが、あのWeb版である。

札幌コンセルヴァトワールという音楽学校のサイトの「タイムカプセル(今月の出来事)」というところで実際に使用しているので見て頂くとイメージがわくのではないかと思う。

以下に実際に使用しているコードを引用しておく。

function getTimeCapsule() {
 $ret = "";
 $header = "";
 $today = getdate();
 // 昔の今月の投稿を取得する
 $args = array('monthnum' => $today["mon"], 'orderby' => 'date', 'order' => 'ASC');
 $query = new WP_Query( $args);
 if ( $query->have_posts() ) {
 $ret = PHP_EOL . "<ul>" . PHP_EOL;
 while ( $query->have_posts() ){
 $query->the_post();
 $year_passed = $today["year"] - get_post_time('Y');
 if($year_passed != 0){
 if($year_passed != $year_passed_previous){
 $ret .= "<li><strong>" . $year_passed . "年前(" . get_post_time('Y') . ")</strong></li>" . PHP_EOL;
 }
 $ret .= "<li><a href=" . get_permalink() . ">" . get_the_title() . "</a></li>" . PHP_EOL;
 }
 $year_passed_previous = $year_passed;
 }
 $ret .= "</ul>" . PHP_EOL;
 wp_reset_postdata(); // メインクエリを再設定
 }else{
 $ret = $today["year"] . "年".$today["mon"] . "月" . $today["mday"] . "日" . "に作成された記事はないようです" . PHP_EOL;
 }
 return($ret);
}
add_shortcode('TimeCapsule', 'getTimeCapsule');
add_filter('widget_text', 'do_shortcode' );

上記の例では過去の同月の記事を取得している。

最終的にTimeCapsuleという名前のショートコードを追加し、ショートコードをウィジェットから使用できるように設定している。

functions.phpや自作のプラグインなどにコピペするなどして使用して頂ければと思う。

この機能は昔を思い出すことができて非常に楽しいので是非お試し頂ければと思う。