ブログ


今回は投稿数をaタグ(リンク内)に含める方法を説明します。

<ul>
	<li><a href="URL">〇〇〇</a>(投稿数)</li>
	<li><a href="URL">〇〇〇</a>(投稿数)</li>
	<li><a href="URL">〇〇〇</a>(投稿数)</li>
</ul>

出力されるHTMLを見ると(投稿数)が<a></a>の外側にあるのが分かります。

ブラウザで確認すると下の画像のようになります。(分かりやすいようにa要素だけ赤文字にしてあります)

ご覧いただいてわかるように投稿数にはCSSが効いていません。

ではどうすればよいのか?パターン別に説明していきます。

ウィジェット・テンプレートタグの場合

カテゴリーリスト

以前紹介したようにテンプレートタグを使ってリンク付きカテゴリーリスト一覧と投稿数を表示させるには下記のタグとパラメータを使います。

<?php wp_list_categories('show_count=1'); ?> 


このタグと、カテゴリーウィジェットを使って投稿数をaタグ内に含めるには、functions.phpに下記のコードを記述します。
※functions.phpを変更する際は、バックアップを取っておくことをオススメします。

function my_list_categories( $output ) {
  $output = preg_replace( '/<\/a>\s*\((\d+)\)/', '($1)</a>', $output );
  return $output;
}
add_filter( 'wp_list_categories', 'my_list_categories', 10, 2 );

上記コードを記述することで投稿数がaタグ内に含めれます。


出力されるHTMLは以下のようになります。

<ul>
	<li><a href="カテゴリー別一覧ページへのURL">カテゴリー名(投稿数)</a></li>
	<li><a href="カテゴリー別一覧ページへのURL">カテゴリー名(投稿数)</a></li>
	<li><a href="カテゴリー別一覧ページへのURL">カテゴリー名(投稿数)</a></li>
</ul>


さらに投稿数のみにCSSを反映させたい場合は投稿数を<span>要素などで囲みます。

function my_list_categories( $output ) {
  $output = preg_replace( '/<\/a>\s*\((\d+)\)/', '<span>($1)</span></a>', $output );
  return $output;
}
add_filter( 'wp_list_categories', 'my_list_categories', 10, 2 );


出力されるHTMLは以下のようになります。

<ul>
	<li><a href="カテゴリー別一覧ページへのURL">カテゴリー名<span>(投稿数)</span></a></li>
	<li><a href="カテゴリー別一覧ページへのURL">カテゴリー名<span>(投稿数)</span></a></li>
	<li><a href="カテゴリー別一覧ページへのURL">カテゴリー名<span>(投稿数)</span></a></li>
</ul>

アーカイブリスト

アーカイブリスト一覧と投稿数を表示させるには下記のタグとパラメータを使います。

<?php wp_get_archives('show_post_count=1'); ?>


このタグと、アーカイブウィジェットを使って投稿数をaタグ内に含めるには、functions.phpに下記のコードを記述します。
※functions.phpを変更する際は、バックアップを取っておくことをオススメします。

function my_list_archives( $output ) {
	$output = preg_replace('/<\/a>\s*( )\((\d+)\)/','($2)</a>',$output);
	return $output;
}
add_filter( 'get_archives_link', 'my_list_archives', 10, 2 );


出力されるHTMLは以下のようになります。

<li><a href="月別アーカイブ一覧ページへのURL">〇〇年〇月(投稿数)</a></li>
<li><a href="月別アーカイブ一覧ページへのURL">〇〇年〇月(投稿数)</a></li>
<li><a href="月別アーカイブ一覧ページへのURL">〇〇年〇月(投稿数)</a></li>

投稿数を<span>要素などで囲む方法はカテゴリーリストと同じなので省略します。

get_categories()関数を使う場合

まずget_categories()関数を使ってリンク付きカテゴリーリスト一覧の投稿数を表示させるコードです。

<ul>
<?php
	$categories = get_categories();
	foreach($categories as $category) {
		echo '<li><a href="'.get_category_link($category->term_id).'">'.$category->name.'</a>('.$category->count.') </li>';
	}
?>
</ul>


このコードを少しだけ修正して投稿数がaタグ内に含まれるようにします。

<ul>
<?php
$categories = get_categories();
foreach( $categories as $category ){
	echo '<li><a href="' . get_category_link( $category->term_id ) . '">' . $category->name . '('.$category->count.') </a></li> ';
}
?>
</ul>

変更点は('.$category->count.')を</a>の内側に移動させただけです。

出力されるHTMLはウィジェット・テンプレートタグの場合のカテゴリーリストと同じです。

投稿数を<span>要素などで囲むには下記のようにします。

<ul>
<?php
$categories = get_categories();
foreach( $categories as $category ){
	echo '<li><a href="' . get_category_link( $category->term_id ) . '">' . $category->name . '<span>('.$category->count.')</span> </a></li> ';
}
?>
</ul>

最後に

紹介したように、投稿数を<span>要素などで囲むとデザインの幅が広がります。


投稿数だけリンク外だとホバーアニメーションがおかしかったり、CSSでスタイリングする際に何かと不便です。

前回の記事と合わせて参考にしてみて下さい。


参考にさせて頂いたサイト
https://www.nxworld.net/wp-list-categories-count-inside-link.html
https://recooord.org/wordpress-archives-month/

岐阜県内でホームページ制作依頼をご検討中の方
まずはお気軽にお問い合わせください。

お電話、ご相談、お見積り無料です!
※フォーム送信後2~3日が経過しても連絡が無い場合は、お手数ですが再度送信してください。

    必須お名前

    必須メールアドレス

    必須電話番号

    お問い合わせ内容