結論:カテゴリは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');
いろんな正規表現を試しました。
にしてみたり、リンク内に数字を入れるようにしたり…
でも結果的に、
- 表示が改行されてバラバラに…
- 「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はカスタマイズ性が高い分、ちょっとしたことでもハマりやすいテーマです。
私のように遠回りしないために、ぜひこの記事が参考になれば嬉しいです!
コメント