Hay un plugin que lo hace:
https://wordpress.org/plugins/simple-yearly-archive/
También puedes probar tu propio código.
Aquí he encontrado este:
Código PHP:
Ver original<?php
// get years that have posts
$years = $wpdb->get_results( "SELECT YEAR(post_date) AS year FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY year DESC" );
foreach ( $years as $year ) {
// get posts for each year
$posts_this_year = $wpdb->get_results( "SELECT post_title FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' AND YEAR(post_date) = '" . $year->year . "'" );
echo '<h2>' . $year->year . '</h2><ul>';
foreach ( $posts_this_year as $post ) {
echo '<li>' . $post->post_title . '</li>';
}
echo '</ul>';
}
?>