【WordPress】月別アーカイブ一覧で、投稿数を表示する方法
WordPressのサイドバーなどで、月別アーカイブや年別アーカイブを簡単に取得するには「 wp_get_archives 」というテンプレートタグを使うのが一般的です。
<ul>
<?php wp_get_archives(); ?>
</ul>
特にカスタマイズもせずにタグを使用すると次のように表示されます。
<ul>
<li><a href="https://sample.jp/2020/08/">2020年8月</a></li>
<li><a href="https://sample.jp/2020/07/">2020年7月</a></li>
</ul>
今回は以下コードのように、年月表示の最後に「 投稿数 」が表示されるように実装していきます。
<ul>
<li><a href="https://sample.jp/2020/08/">2020年8月(4)</a></li>
<li><a href="https://sample.jp/2020/07/">2020年7月(9)</a></li>
</ul>
投稿数を表示する方法
<ul>
<?php wp_get_archives('show_post_count=1'); ?>
</ul>
テンプレートタグの()内に「 show_post_count=1 」と記述します。
「 show_post_count 」は投稿数を表示するかどうかのパラメータとなります。
デフォルトでは非表示となっていますので、「1」という数値を入れることで「True」と判定され、投稿数を表示することが出来ます。
では出力されたHTMLコードを見てみましょう。
HTMLの表示結果
<ul>
<li><a href="https://sample.jp/2020/08/">2020年8月</a> (4)</li>
<li><a href="https://sample.jp/2019/08/">2020年7月</a> (9)</li>
</ul>
はい、投稿数を表示することは出来ましたが、数値がaタグの外側に出てしまっています。
この数値をaタグ内に入れるために、functions.phpに次のコードを追記します。
functions.phpにコードを追記する
add_filter( 'get_archives_link', 'my_archives_link' );
function my_archives_link( $output ) {
$output = preg_replace('/<\/a>\s*( )\((\d+)\)/','($2)</a>',$output);
return $output;
}
上記のコードを簡単に説明すると、preg_replace関数を使って、投稿数がaタグが内側に入るように置換しています。
functions.phpを編集したらサーバーにアップロードします。
再び出力されるHTMLを確認してみましょう。
HTMLの表示結果
<ul>
<li><a href="https://sample.jp/2020/08/">2020年8月(4)</a></li>
<li><a href="https://sample.jp/2020/07/">2020年7月(9)</a></li>
</ul>
はい、上記のように投稿数をaタグ内に入れることが出来ました。
もしもaタグ内に投稿数を含めなくても良い場合は、後に紹介したfunctions.phpの記述はしなくても大丈夫です。
よかったら参考にしてみてください。