
This plugin adds a new widget where you can view your old posts by expanding certain years and months.
Expanding Archives adds a widget that shows your old posts in an expandable/collapsible format. Each post is categorized under its year and month, so you can expand all the posts in a given month and year.
This plugin comes with very minimal CSS styling so you can easily customize it to match your design.
JavaScript is required. No IE support.
expanding-archives to the /wp-content/plugins/ directoryThe plugin does not come with a settings panel so you have to do this with your own custom CSS. Here are a few examples:
Change the year background colour:
.expanding-archives-title { background: #000000; } Change the year font colour:
.expanding-archives-title a { color: #ffffff; } By default, the widget includes posts in all categories. You can add the following code to a custom plugin or a child theme’s functions.php file to limit the results to posts in a specific category:
add_filter('expanding_archives_get_posts', function(array $args) { $args['cat'] = 2; // Replace with ID of your category. return $args; }); add_filter('expanding_archives_query', function(string $query) { $category = get_category(2); // Replace with ID of your category. if (! $category instanceof \WP_Term) { return $query; } global $wpdb; return " SELECT DISTINCT MONTH(post_date) AS month, YEAR(post_date) AS year, COUNT(id) as post_count FROM {$wpdb->posts} INNER JOIN {$wpdb->term_relationships} ON ({$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id AND {$wpdb->term_relationships}.term_taxonomy_id = 2) WHERE post_status = 'publish' AND post_date <= now() AND post_type = 'post' GROUP BY month, year ORDER BY post_date DESC "; }); Be sure to set the ID of your category in both of the designated places (the examples use ID 2).
Note that the results may not update instantly, as the query to retrieve the date periods is cached for one day. To force the query to re-run, delete this transient: expanding_archives_months
By default, the widget will show a list of every year you’ve published posts.
If you have a lot of posts, you may wish to only show results from the last few years. This can be done with the following code snippet:
add_filter('expanding-archives/earliest-date', fn() => '-4 years'); You can change -4 years to any value supported by the PHP DateTime constructor. This can be a relative value (as shown above), or a specific date like:
add_filter('expanding-archives/earliest-date', fn() => '2023-01-01'); Note that the results may not update instantly, as the query to retrieve the date periods is cached for one day. To force the query to re-run, delete this transient: expanding_archives_months
xhrFields: { withCredentials: true } to ajax call.