サイドバー 日付アーカイブのリンクの色を変更したい
-
いつもお世話になります。
フォーラムに投稿されている記事にいつも助けられています。ありがとうございます。
今回もいろいろと探してみましたが、解決できずにいるので、投稿させていただきます。サイドバーに「日付アーカイブ」を表示しているのですが、どこのページにいるのかを分かりやすくする為、該当する「日付アーカイブ」ページを表示した際に、サイドバーに表示されている「日付アーカイブ」のリンクの色を変更したいと思っています。
【例】
過去のニュース
→ 2011年3月
→ 2011年2月
→ 2010年12月
(2011年3月のアーカイブページが表示されている場合、サイドバーの2011年3月のリンクの色を変更したい)現在はWordpress3.1で構築しており、現在のソースは以下となります。
【sidebar.php】
<div id="right_area" class="news"> <ul> <li>過去のニュース</li> <li><ul> <?php wp_get_archives( 'type=monthly' ); ?> </ul></li> </ul> </div>
【表示されるHTML】
<div id="right_area" class="news"> <ul> <li>過去のニュース</li> <li><ul> <li><a href='リンクURL' title='2011年3月'>2011年3月</a></li> <li><a href='リンクURL' title='2010年8'>2010年8月</a></li> <li><a href='リンクURL' title='2008年3月'>2008年3月</a></li> </ul></li> </ul> </div>
分岐条件を使って、liタグにclassを付ければ良いのかなと思いますが、PHPがまったくの素人の為、どのファイルにどの様に書けば良いのかわかりません…。
そもそも無理な事なのでしょうか?解決にご協力いただけると助かります。
よろしくお願い致します。
3件の返信を表示中 - 1 - 3件目 (全3件中)
-
baritoneさん、こんにちは。
get_archives_linkにフックし、正規表現でマッチングさせて置換を行うことで可能と思われます。
- is_monthがtrueの時だけ書き換え
- $_SERVER[‘REQUEST_URI’]とリンクのアドレスが一致したら、liタグをclassを付加したものに置換
という流れになります。
このコードで試してみて下さい。
function add_archive_current_class( $link_html ) { $regex = '/^\t<(link |option |li>)/'; if ( preg_match( $regex, $link_html, $m ) ) { switch ( $m[1] ) { case 'option ' : $search = '<option'; $replace = '<option selected="selected"'; $regex = "/^\t<option value='([^']+)'>[^<]+<\/option>/"; break; case 'li>' : $search = '<li>'; $replace = '<li class="current-arichive-item">'; $regex = "/^\t<li><a href='([^']+)' title='[^']+'>[^<]+<\/a><\/li>/"; break; default : $search = ''; $replace = ''; $regex = ''; } } if ( is_month() && $regex && preg_match( $regex, $link_html, $m ) ) { if ( preg_match( '/' . preg_quote( $_SERVER['REQUEST_URI'], '/' ) . '$/', $m[1] ) ) { $link_html = str_replace( $search, $replace, $link_html ); } } return $link_html; } add_filter( 'get_archives_link', 'add_archive_current_class' );
3件の返信を表示中 - 1 - 3件目 (全3件中)
- トピック「サイドバー 日付アーカイブのリンクの色を変更したい」には新たに返信することはできません。