Build your own "On This Day" page for WordPress


I blog. A lot. Too much really. One of the things I like to do is see what I was rambling on about this time last year. And the year before that. And so on.

So, here's my On This Day page and here's how I built it.

WARNING Extremely quick and dirty code ahead!

This allows you to add a shortcode like [ edent_on_this_day ] to a page and have it auto generate a list of posts you published on this day in previous years. You may need to exclude that page from your cache.

Add these functions to your theme or to a new plugin:

PHP PHPfunction edent_on_this_day_shortcode() {
    $today = getdate();
    $args = array(
        'date_query' => array(
            array(
                'month' => $today['mon'],
                'day'   => $today['mday'],
            ),
        ),
    );
    $query = new WP_Query( $args );
    $posts = $query->get_posts();

    $today = getdate();
    $pubDate =  date("D, d M Y") . " 00:00:00 GMT";

    $output  = "<h2>From the " . date("jS \of F") . " archives</h2>";
    $output .= "<ul>";

    foreach($posts as $post) {
        $title = $post->post_title;
        $id    = $post->ID;
        $link  = get_permalink($id);
        $date  = $post->post_date;
        $postDate = date("D, d M Y") . " " . date("h:i:s O", strtotime($date));
        // $thumb = get_the_post_thumbnail($id, 'full');

        $archive = "" . date("Y", strtotime($date)) . ": ";

        //  Only add an item if it is before *this year*
        if (
            intval(date("Y", strtotime($date))) <  intval($today['year'])
        ) {
            $output .= '<li><a href="' . htmlspecialchars($link) .'">';
            $output .= html_entity_decode($archive . $title) . '</a></li>';
        }
    }
    $output .= "</ul>";
    return $output;
}

//  Set up the shortcode
function edent_on_this_day_shortcode_init() {
    add_shortcode( 'edent_on_this_day', 'edent_on_this_day_shortcode' );
}
add_action( 'init', 'edent_on_this_day_shortcode_init' );

I really can't be bothered to deal with WordPress's complicated plugin publishing system - so feel free to copy the above with or without attribution.

I originally built this as an RSS feed - but decided recently that a regular HTML page was more useful. If you spot any bugs, you can contribute on GitHub.

Enjoy!


Share this post on…

  • Mastodon
  • Facebook
  • LinkedIn
  • BlueSky
  • Threads
  • Reddit
  • HackerNews
  • Lobsters
  • WhatsApp
  • Telegram

One thought on “Build your own "On This Day" page for WordPress”

What are your reckons?

All comments are moderated and may not be published immediately. Your email address will not be published.

Allowed HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <p> <pre> <br> <img src="" alt="" title="" srcset="">