注:
アーカイブがなければ、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 かどうかをチェックするなどの必要が出そうです。
パフォーマンスがどえらい事になるので、オプションテーブル等にに値を保存して、使いまわす。
などの工夫の必要がありそうです。