WordPressでは、「アーカイブ」ウィジェットなどに表示される月別アーカイブリストではその月の投稿数(カウント数)を表示することができます。
ただ、このカウント数はデフォルトではリンクの外側、つまりaタグの外に出力されています。
個人的にはカウント数はリンクの中に入っていてほしので、カウントの数値部分をaタグの中に入れる方法を調べてきました。
ウィジェットの「アーカイブ」およびwp_get_archives()
で出力される月別アーカイブに適用される方法です。
アーカイブリストの投稿件数をaタグ内に移動させるコード
'get_archives_link'
というフィルターフックを利用します。
6つほど引数を取ることができますが、第1引数$link_html
に出力されるソースコードが代入されているので、こちらの中身を書き換える処理を挟めばOKです。
投稿件数 をaタグの中に移動するだけなら
function filter_to_archives_link( $link_html, $url, $text, $format, $before, $after ) {
if ( 'html' === $format ) {
$link_html = "<li>$before<a href='$url'>$text$after</a></li>n";
}
return $link_html;
}
add_filter('get_archives_link', 'filter_to_archives_link', 10, 6 );
$after
の部分に投稿件数が入っているので、これをそのまま</a>
の直前へ移動させてあげています。
また、正規表現を使ってpreg_replace()
で書き換える方法でもいいでしょう。
正規表現で書き換えるパターン
function filter_to_archives_link( $link_html ) {
$link_html = preg_replace('/<\/a>(.+?)<\/li>/',' $1</a></li>',$link_html);
return $link_html;
}
add_filter('get_archives_link', 'filter_to_archives_link');
投稿件数は</a>
と</li>
の間にあるので、その部分の文字列を全て</a>
の直前へ移動させています。
preg_replace()
は処理が重いと言われているので、前者の方がいいかなとは思います。
投稿件数の部分をspanタグで囲んでみる
投稿件数部分は小さく表示したりしたいので、CSSがあてやすいようにspanタグで囲ってみました。
投稿件数をaタグの中に移動 & spanタグで囲むコード
function filter_to_archives_link( $link_html, $url, $text, $format, $before, $after ) {
if ( 'html' === $format ) {
$link_html = "<li>$before<a href='$url'>$text<span>$after</span></a></li>n";
}
return $link_html;
}
add_filter( 'get_archives_link', 'filter_to_archives_link', 10, 6 );
こちらも簡単ですね。
先ほどは$after
を</a>
の直前に移動させただけでしたが、さらにspanタグで囲んであげた状態にしただけです。
クラス名なども好きにつけたりしてみてください。
また、カテゴリーアーカイブリストの投稿数をaタグの中に入れてspanタグで囲む方法もメモしていますので、ぜひ参考にしてみてください。