技術ブログ
wp_list_categoriesのカスタマイズ 記事件数表示位置の変更
2021.11.24
WP
wp_list_categories()関数のカスタマイズ
wp_list_categories()では記事の表示件数はaタグの外に記述されます。これをaタグの中に持ってきたい場合のカスタマイズ方法です。
概要
wp_list_categories()関数をカスタマイズする際、以下の3つの方法があります。
- wp_list_categoriesの直接修正
- wp_list_categoriesにアクションフック、フィルターフックで対応
- wp_list_categoriesの代替関数を自作
1 は絶対にしないでください。/wp-includes/category-template.phpに実装内容はありますが、ここを変更すると、バージョンアップ時に上書きされてしまいます。
3 も選択肢の1つですが、wp_list_categoriesが割と長い関数であることと、別のカスタマイズが出てきた際に収拾がつけにくくなることから、今回は2を選択することとします。
フィルターフックによる実装
/wp-includes/category-template.php内のwp_list_categories()関数実装箇所をみていただくとわかりますが、この関数の末尾に
1 2 3 |
$html = apply_filters( 'wp_list_categories', $output, $args ); |
という箇所があり、フィルターフックが実装されていることがわかります。
この位置のフィルターフックで自作関数により置換をすることで、記事件数の表示位置を変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/** * wp_list_categoriesのカスタマイズ * 記事件数表示位置の変更 </a>(記事件数) -> (記事件数)</a> **/ function jnm_change_postnum( $output, $args ) { $regex = '/<\/a> \(([0-9]+)\)/'; $replacements = '(${1})</a>'; $output = preg_replace( $regex, $replacements, $output ); return $output; } add_filter( 'wp_list_categories', 'jnm_change_postnum', 10, 2 ); |
pressx.jpテンプレートを利用の方は、デフォルトで実装しています。