wp_list_categoriesで()の数字をリンクさせる&余計な改行を削除


カテゴリが五十音なので、Bootstrapのページネーション使えばいんじゃね?と思ったものの、wp_list_categories()の数字がリンクに入らなくて困ったのでググる。

参考:WordPress(ワードプレス)カテゴリー一覧表示で、投稿数もリンク内に出力する | 福島県郡山市のホームページ制作、Web制作 Kyasper Web Design キャスパーウェブデザイン

preg_replaceで解決。
僕はその他classとかも削除したかったので、functions.phpで以下のようにした。

function wp_list_categories_cut( $cut ) {
    $cut = preg_replace('/<li class="(.+?)"/','<li',$cut);//classの削除
    $cut = preg_replace('/ title=\"(.*?)\"/','',$cut);//titleの削除
    $cut = preg_replace('/<\/a> (\([0-9]*\))/', ' $1</a>', $cut);//ここでリンク内に(n)を入れる
    return $cut;
}
add_filter( 'wp_list_categories', 'wp_list_categories_cut',10 );

preg_replaceさん便利やなぁ。。。(*´ω`*)

wp_list_categoriesのソースコードを見たけど、$r['pad_counts']をなんかすりゃいいの?と思ったがうまくいかずピンとこなかった。
ソースコードから解読の道は遠い。。。

</a>
<・li>

って余分な改行ができちゃうんだけど、それも削除できた。

$cut = preg_replace('/<\/a>\n/', '</a>', $cut);

を追加すればおk。