閉じる

技術ブログ

wp_list_categoriesのカスタマイズ 記事件数表示位置の変更

2021.11.24
WP

wp_list_categories()関数のカスタマイズ

wp_list_categories()では記事の表示件数はaタグの外に記述されます。これをaタグの中に持ってきたい場合のカスタマイズ方法です。

概要

wp_list_categories()関数をカスタマイズする際、以下の3つの方法があります。

  1. wp_list_categoriesの直接修正
  2. wp_list_categoriesにアクションフック、フィルターフックで対応
  3. wp_list_categoriesの代替関数を自作

1 は絶対にしないでください。/wp-includes/category-template.phpに実装内容はありますが、ここを変更すると、バージョンアップ時に上書きされてしまいます。

3 も選択肢の1つですが、wp_list_categoriesが割と長い関数であることと、別のカスタマイズが出てきた際に収拾がつけにくくなることから、今回は2を選択することとします。

フィルターフックによる実装

/wp-includes/category-template.php内のwp_list_categories()関数実装箇所をみていただくとわかりますが、この関数の末尾に

	$html = apply_filters( 'wp_list_categories', $output, $args );

という箇所があり、フィルターフックが実装されていることがわかります。

この位置のフィルターフックで自作関数により置換をすることで、記事件数の表示位置を変更します。

/**
* wp_list_categoriesのカスタマイズ
* 記事件数表示位置の変更 (記事件数) -> (記事件数)
**/
function jnm_change_postnum( $output, $args ) {
  $regex    = '/<\/a> \(([0-9]+)\)/';
  $replacements = '(${1})';
  $output = preg_replace( $regex, $replacements, $output );
  return $output;
}
add_filter( 'wp_list_categories', 'jnm_change_postnum', 10, 2 );

pressx.jpテンプレートを利用の方は、デフォルトで実装しています。