アーカイブを年毎ではなく、年度毎に表示させる必要があるときのカスタマイズ方法。
まずは、プラグイン「Archives for a category」をインストールして有効化する。
このプラグインのおかげで、アーカイブリストを取得する関数「wp_get_archives」に設定したカテゴリーが反映されるようになる。このプラグインがなければカテゴリーの絞り込みができないというわけだ。
wp_get_archives()を次の様に設定する。
※注)カテゴリーIDが1だった場合
wp_get_archives('type=yearly&cat=1');
これで、年毎のアーカイブリストを取得する事が出来る。
更にプルダウン化させるのであれば、下記のように追記する。
<select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'>
<?php wp_get_archives('type=yearly&format=option&cat=30'); ?>
</select>
wp_get_archivesにformat=optionを追記することで、取得結果を<option value="url">2014</opution>という風にオプションタグで書き出されるので、<select>タグを前後に付ければプルダウンにできる。
これで、リンク先がドメイン名/date/西暦?cat=カテゴリーIDとなって、指定した西暦、カテゴリーに絞られたアーカイブが表示される。
あとは、表示されるページの投稿取得範囲を、4月1日~3月31日に設定すれば完了。
3ヵ月遅らせるソースは下記の通り。
function query_for_fiscal_year( $where ) {
global $wpdb, $wp_query, $fiscal_year;
if ( is_year() ) {
$fiscal_year = (int)$wp_query->query_vars['year'];
$next_year = $fiscal_year + 1;
$where = preg_replace("/AND YEAR\(wp_posts\.post_date\)='[0-9]+'/", '', $where);
$where .= "
AND ( ( YEAR($wpdb->posts.post_date) = '$fiscal_year' AND MONTH($wpdb->posts.post_date) BETWEEN '4' AND '12' )
OR ( YEAR($wpdb->posts.post_date) = '$next_year' AND MONTH($wpdb->posts.post_date) BETWEEN '1' AND '3') )";
}
return $where;
}
add_action( 'posts_where', 'query_for_fiscal_year' );
上記ソースをfunctions.phpに追記すれば完成。
まずは、プラグイン「Archives for a category」をインストールして有効化する。
このプラグインのおかげで、アーカイブリストを取得する関数「wp_get_archives」に設定したカテゴリーが反映されるようになる。このプラグインがなければカテゴリーの絞り込みができないというわけだ。
wp_get_archives()を次の様に設定する。
※注)カテゴリーIDが1だった場合
wp_get_archives('type=yearly&cat=1');
これで、年毎のアーカイブリストを取得する事が出来る。
更にプルダウン化させるのであれば、下記のように追記する。
<select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'>
<?php wp_get_archives('type=yearly&format=option&cat=30'); ?>
</select>
wp_get_archivesにformat=optionを追記することで、取得結果を<option value="url">2014</opution>という風にオプションタグで書き出されるので、<select>タグを前後に付ければプルダウンにできる。
これで、リンク先がドメイン名/date/西暦?cat=カテゴリーIDとなって、指定した西暦、カテゴリーに絞られたアーカイブが表示される。
あとは、表示されるページの投稿取得範囲を、4月1日~3月31日に設定すれば完了。
3ヵ月遅らせるソースは下記の通り。
function query_for_fiscal_year( $where ) {
global $wpdb, $wp_query, $fiscal_year;
if ( is_year() ) {
$fiscal_year = (int)$wp_query->query_vars['year'];
$next_year = $fiscal_year + 1;
$where = preg_replace("/AND YEAR\(wp_posts\.post_date\)='[0-9]+'/", '', $where);
$where .= "
AND ( ( YEAR($wpdb->posts.post_date) = '$fiscal_year' AND MONTH($wpdb->posts.post_date) BETWEEN '4' AND '12' )
OR ( YEAR($wpdb->posts.post_date) = '$next_year' AND MONTH($wpdb->posts.post_date) BETWEEN '1' AND '3') )";
}
return $where;
}
add_action( 'posts_where', 'query_for_fiscal_year' );
上記ソースをfunctions.phpに追記すれば完成。