『wp_list_categories()』にbefore,afterを設定して文字列を追加[WordPress]
カテゴリ別アーカイブリストを表示するタグ『wp_list_categories()』で出力されるリンクテキストに任意の文字列を追加する方法です。「before」「after」引数と同じような設定を行えます。
まえがき
月別アーカイブリストを表示するタグ『wp_get_archives()』には引数に「before」と「after」が用意されていて好きな文字列をリンク文字の前後に入れることが可能ですが、カテゴリ別アーカイブリストを表示するタグ『wp_list_categories()』には何故か「before」と「after」が用意されておらず、好きな文字列を入れることが出来ません。どうしてさ!!!
そんな『wp_list_categories()』ですが、function.phpにコードを追加するだけで「before」「after」と同じような設定を行うことが可能になります。
『wp_list_categories()』に「before」「after」を設定し文字列を追加する
function.phpに以下のコードを追加します。
add_filter ( 'wp_list_categories', 'span_before_link_list_categories' ); function span_before_link_list_categories( $list ) { $list = str_replace('<a href=','<span>・</span><a href=',$list); //リンクテキストの前に「<span>・</span>」を追加(before) $list = str_replace('</a>','<span>・</span></a>',$list); //リンクテキストの後に「<span>・</span>」を追加(after) return $list; }
このコードをfunctions.phpに追加することでリンクテキストの前後に「<span>・</span>」が付くようになります。
「<span>・</span>」の部分は好きな文字列に変更してください。
function.phpにコード追加できたらそれだけで『wp_list_categories()』で出力したリンクに設定した文字列が追加されるはずです。
ちょこっと説明すると、「span_before_link_list_categories」関数で、『wp_list_categories()』が出力するタグの中のaタグを「str_replace」で判定して文字列置換しています。
まとめ
この方法を発見する前はわざわざ「$categories = get_categories();」してforeach文で無理やり文字列追加してたんですがこっちの方が断然お手軽ですね。
ていうか標準で「before」「after」くらい付けてくれてもよさそうですが。。。
色々あるのでしょうね笑
しばらくはこの対処法で乗り切ります。