WEB制作者向け無料テーマ「Arkhe」をリリースしました

WordPressで月別アーカイブリストの投稿件数(カウント数)をアンカータグの中に移動する方法

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タグで囲む方法もメモしていますので、ぜひ参考にしてみてください。

あわせて読みたい
WordPressでカテゴリー一覧リストの投稿件数(カウント数)をアンカータグの中に移動する方法 WordPressでは、「カテゴリー」ウィジェットやwp_list_categories()関数を使用するとカテゴリー一覧リストを簡単に表示できます。 このカテゴリーリストには、設定によ...

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次