注:
アーカイブがなければ、404 not found になります
$my_archive_queryは、必要なだけ配列などに入れてループ。
<?php
$my_author_list= wp_list_authors('show_fullname=1&echo=0');
$my_archive_query= '&m=200805';
echo preg_replace( '!(href="[^"]+)"!',"\\1{$my_archive_query}\"",$my_author_list);
?>
http://ja.forums.wordpress.org/topic/12221?replies=6(@source)
なので、
<?php
$year= date( 'Y' );
$month= date( 'm' );
$my_author_list= wp_list_authors('echo=0&exclude_admin=0');?>
<ul style="list-style:none;">
< ?php
for($i=1; $i < $month +1; $i++ ){
$title= '<li style="margin-left:-1em;"><h3>%1$s</h3>';
printf( $title, $year.'年'. $i. '月' );
$my_archive_query= '&m='.$year.sprintf("%02d",$i);
echo preg_replace( '!(href="[^"]+)"!',"\\1{$my_archive_query}\"",$my_author_list);
}
?>
</ul>
機械的には、上のように書けば、月次で表現が出来そうです。
ただ、この方法では、404のリンクも機械的に書き出してしまいますから、実用にするためには、投稿の存在をチェックしないといけません。
この方法で、それを実現しようとしたら、
wp_remote_get()などで、レスポンスチェックを行い 返り値の[‘body’][‘response’][‘code’]が200 かどうかをチェックするなどの必要が出そうです。
パフォーマンスがどえらい事になるので、オプションテーブル等にに値を保存して、使いまわす。
などの工夫の必要がありそうです。