WordPress Snippet

ワードプレスをカスタマイズしよう

投稿者毎の月次アーカイブリンクの作成

注:
アーカイブがなければ、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 かどうかをチェックするなどの必要が出そうです。

パフォーマンスがどえらい事になるので、オプションテーブル等にに値を保存して、使いまわす。

などの工夫の必要がありそうです。

[emulsion_relate_posts]