【functions.phpカスタマイズ】カテゴリはうまくいったのに、アーカイブで撃沈した話

Cocoonカスタマイズ

結論:カテゴリはfunctions.phpでOK、アーカイブは非表示が正解かも

WordPressテーマ「Cocoon」で、カテゴリやアーカイブの件数を
「働き方 1」→「働き方(1)」みたいに見やすく表示したい!と思って調整してみたんですが…

結論から言うと、

  • カテゴリ:functions.phpのカスタマイズで簡単に対応可能
  • アーカイブ:HTML構造の都合で見た目が崩れる。削除が一番スッキリ

でした!


私のぐだぐだ失敗記録(同じことで悩んでる人の参考になれば…)

やりたかったこと

Cocoonのサイドバーで、カテゴリとアーカイブの件数が「カテゴリ名のすぐ後ろ」に(カッコ付き)で出てほしかったんです。
でも最初は「働き方 1」みたいに間が空いていて、どうしても気になって…。


最初にやったこと(カテゴリ編)

カテゴリは functions.php に以下を追加したらすぐ成功しました。

function custom_cocoon_category_count_format($output) {
$output = preg_replace('/<\/a>\s*((\d+))/','($1)',$output);
return $output;
}
add_filter('wp_list_categories', 'custom_cocoon_category_count_format');
  • 投稿数の表示ON
  • ドロップダウンOFF

この2つをウィジェットでチェックすれば、すんなり「カテゴリ名(1)」みたいに整います。


ここからが沼…アーカイブ編

アーカイブも同じように get_archives_link フィルターを使えばいけると思ってたんです。

add_filter('get_archives_link', 'custom_cocoon_archive_count_format');

いろんな正規表現を試しました。
&nbsp; にしてみたり、リンク内に数字を入れるようにしたり…

でも結果的に、

  • 表示が改行されてバラバラに…
  • 「2025年4月」→「(2)」と分断されたり
  • CSSで無理やりくっつけても「2025年4月2」みたいな謎表示になったり…

しまいにはもう笑うしかない状態。


Cocoonの仕様を調べて分かったこと

CocoonはアーカイブウィジェットのHTML構造を独自に調整しているようで、
投稿数が <span> 要素で分かれて出力されているため、PHPフィルターで置き換えるのが困難でした。


最終的な結論(再掲)

  • カテゴリだけなら functions.php の記述で完結
  • アーカイブは素直に非表示 or 別のウィジェットに切り替えが吉
  • そもそもアーカイブって使う?カテゴリやタグで十分かも!

おまけ:私が試したfunctions.php全文(コピペOK)

// カテゴリの件数表示を(数字)に整形
function custom_cocoon_category_count_format($output) {
$output = preg_replace('/<\/a>\s*\((\d+)\)/','($1)</a>',$output);
return $output;
}
add_filter('wp_list_categories', 'custom_cocoon_category_count_format');

// アーカイブは断念しました(いろいろ試したけど非表示に…)

同じように「カテゴリやアーカイブの表示、気になる!」という方へ

Cocoonはカスタマイズ性が高い分、ちょっとしたことでもハマりやすいテーマです。
私のように遠回りしないために、ぜひこの記事が参考になれば嬉しいです!

コメント

タイトルとURLをコピーしました