wp_list_categoriesと違い、wp_get_archivesにはcurrent_categoryという引数がないため、新しく関数を作るか、既存のwp_get_archivesを変更するしかないでしょう。
全くおすすめはできませんが、以下のように変更すれば、ご希望の形に近くはなります。
general-template.phpを変更します。
変更前
function wp_get_archives($args = '') {
…
(中略)
…
} elseif ('yearly' == $type) {
if ($arcresults) {
$afterafter = $after;
foreach ( (array) $arcresults as $arcresult) {
$url = get_year_link($arcresult->year);
$text = sprintf('%d', $arcresult->year);
if ($show_post_count)
$after = ' ('.$arcresult->posts.')' . $afterafter;
$output .= get_archives_link($url, $text, $format, $before, $after);
}
}
} elseif ( 'daily' == $type ) {
(以下略)
変更後
$after = ' ('.$arcresult->posts.')' . $afterafter;
if ($arcresult->year == get_year_link(get_the_time('Y')))){
$before = $before . '<span class="current">';
$after = '</span>' . $after;
}
$output .= get_archives_link($url, $text, $format, $before, $after);
あくまで、ご参考まで。
>kurosquare様
ご回答ありがとうございます。
general-template.phpの該当する変更箇所は分かったのですが、教えて頂いた方法でなかなかうまくいきません。foreachのループがうまく配列になってくれないため、例えば2009年の年別アーカイブにいるときは2009だけアクティブにしたいのですが、2007や2008にもclass=”current”がついてしまう状況です。
$arcresultをうまく配列にする方法はありますでしょうか。
wp_get_archives(‘type=yearly’)で、該当の年にいるときに、カレント表示を
functions.php に以下を記述すればOKです。
function my_archives_link($link_html){
if(preg_match_all('@<a .*>([0-9]+)</a>@i', $link_html, $matches))
if(date('Y') == $matches[1][0])
$link_html = preg_replace('@<li>@i', '<li class="current-year">', $link_html);
return $link_html;
}
add_filter('get_archives_link', 'my_archives_link');
>kz様
お世話になります。ご回答ありがとうございます!
やってみたところ、確かにclass=”current”は追加できました。ただ、2009にしかつかず、2007,2008のときも2009にclass=”current”がついてしまいます。
この場合はどのようにすればよろしいでしょうか。
度々申し訳ないですがよろしくお願いいたします。
あ、現在の年と比較してました。
アーカイブ年なら get_query_var(‘year’) と比較すれば OK です。
function my_archives_link($link_html){
global $post;
if(preg_match_all('@<a .*>([0-9]+)</a>@i', $link_html, $matches))
if(get_query_var('year') == $matches[1][0])
$link_html = preg_replace('@<li>@i', '<li class="current-year">', $link_html);
return '<p>'.get_query_var('year').'</p>'.$link_html;
}
add_filter('get_archives_link', 'my_archives_link');
>kz様
お世話になります。再度のご回答ありがとうございます。
無事実装できました!!本当にありがとうございます。
最終的に以下のソースになりましたのでフォーラムのために記述しておきます。
本当にお世話になりました。また何かありましたら質問させて頂きたいと思います。
function my_archives_link($link_html){
if(preg_match_all('@<a .*>([0-9]+)</a>@i', $link_html, $matches))
if(get_query_var('year') == $matches[1][0])
$link_html = preg_replace('@<li>@i', '<li class="current">', $link_html);
return $link_html;
}
add_filter('get_archives_link', 'my_archives_link');
良かったです(余計なコードが混ざってましたね)。
解決済でしたら、
このページの右側のわかりにくい場所に
「このトピックは」とありますので
[未解決]を[解決済]に変更して
[変更]ボタンをクリックしていただくと
今年の運気がアップします。