サイドバーのカテゴリーに件数を表示する方法

WordPressのサイドバーで、各カテゴリーに属する投稿件数を表示したいときがあります。標準ウィジェットでも件数は表示できますが、デザインを調整したり、独自の場所に表示したい場合には、functions.php にコードを追加する方法が便利です。

1 実装のポイント

  • functions.php にフックを追加してカテゴリー取得
  • ウィジェットやサイドバーで呼び出せるショートコードを作成
  • CSSで件数のデザイン調整
  • 必要に応じてJavaScriptで動的表示も可能

2 functions.php にコードを追加


//-------------------------------------------
// カテゴリーと投稿件数を取得して表示するショートコード
//-------------------------------------------
function my_category_count_list() {
    $categories = get_categories(array(
        'orderby' => 'name',
        'order'   => 'ASC',
        'hide_empty' => 0
    ));

    // カテゴリーをID順に配列化してアクセスしやすく
    $cat_list = array();
    foreach ($categories as $cat) {
        $cat_list[$cat->term_id] = $cat;
    }

    $output = '<ul class="my-category-count">';

    foreach ($categories as $cat) {
        // 階層レベルを計算
        $level = 0;
        $parent = $cat->parent;
        while ($parent != 0) {
            $level++;
            $parent = isset($cat_list[$parent]) ? $cat_list[$parent]->parent : 0;
        }

        $output .= '<li class="cat-level-' . $level . '">';
        $output .= '<a href="' . esc_url(get_category_link($cat->term_id)) . '">';
        $output .= esc_html($cat->name) . ' (' . intval($cat->count) . ')</a></li>';
    }

    $output .= '</ul>';
    return $output;
}
add_shortcode('category_count', 'my_category_count_list');
補足:
このショートコード [category_count] をウィジェットや固定ページ、投稿に挿入するとカテゴリー一覧+件数が表示されます。

記事内で表示する場合:


[category_count]
  

サイドバー共通

3 汎用CSS


/* -----------------------------
 * カテゴリーリストのデザイン
 * ----------------------------- */

/* ul全体を左端に揃える */
.my-category-count {
    list-style: none;     /* デフォルトのリストマーカーを消す */
    margin: 0;            /* 外側の余白をなくす */
    padding: 0;           /* 内側の余白をなくす */
}

/* liの下線と上下余白 */
.my-category-count li {
    margin: 0;                      /* li間の余白をなくす */
    border-bottom: 1px dotted #999; /* 灰色の点線下線を追加 */
}

/* aをブロック化して行全体ホバー可能に */
.my-category-count li a {
    display: block;             /* 行全体をクリック可能に */
    padding: 8px 10px;          /* 内側の余白を設定 */
    text-decoration: none;      /* 下線を消す */
    color: #333;                /* 文字色を濃いグレーに設定 */
    background-color: #ffffff;  /* 背景を白に設定 */
}

/* 階層ごとのインデント */
.my-category-count li.cat-level-0 a { padding-left: 10px; }  /* 1階層目 */
.my-category-count li.cat-level-1 a { padding-left: 25px; }  /* 2階層目 */
.my-category-count li.cat-level-2 a { padding-left: 40px; }  /* 3階層目 */
.my-category-count li.cat-level-3 a { padding-left: 55px; }  /* 4階層目 */
.my-category-count li.cat-level-4 a { padding-left: 70px; }  /* 5階層目 */

/* ホバー時に行全体に薄い灰色背景 */
.my-category-count li a:hover {
    background-color: #e0e0e0; /* ホバーで薄い灰色に変更 */
}
    

4 テーマ別サンプルCSS

4.1 Lightning


/* -----------------------------
 * Lightning用 サイドバーのカテゴリーに件数を表示
 * ----------------------------- */

/* ul全体を左端に揃える */
.my-category-count {
    list-style: none;          /* デフォルトのリストマーカーを消す */
    margin: 0;                 /* ulの上下左右の余白をなくす */
    padding: 0;                /* 内側の余白をなくす */
    margin-left: -30px;        /* テーマの余白を打ち消して左端に揃える */
}

/* liの下線と上下余白 */
.my-category-count li {
    margin: 0;                      /* li間の余白をなくす */
    border-bottom: 1px dotted #999; /* 灰色の点線下線を追加 */
}

/* aをブロック化して行全体ホバー可能に */
.my-category-count li a {
    display: block;             /* 行全体をクリック可能に */
    padding: 8px 10px;          /* 内側の余白を設定 */
    text-decoration: none;      /* 下線を消す */
    color: #333;                /* 文字色を濃いグレーに設定 */
    background-color: #ffffff;  /* 背景を白に設定 */
}

/* 階層ごとのインデント */
.my-category-count li.cat-level-0 a { padding-left: 10px; }  /* 1階層目 */
.my-category-count li.cat-level-1 a { padding-left: 25px; }  /* 2階層目 */
.my-category-count li.cat-level-2 a { padding-left: 40px; }  /* 3階層目 */
.my-category-count li.cat-level-3 a { padding-left: 55px; }  /* 4階層目 */
.my-category-count li.cat-level-4 a { padding-left: 70px; }  /* 5階層目 */

/* ホバー時に行全体に薄い灰色背景 */
.my-category-count li a:hover {
    background-color: #e0e0e0; /* ホバーで薄い灰色に変更 */
}
    

5 完成イメージ

6 代用プラグイン

  • 「Category Posts Widget」: カテゴリー別の投稿をウィジェットで表示可能
  • 「Advanced Sidebar Menu」: カテゴリーやカスタム分類をメニューとして表示

7 まとめ

サイドバーにカテゴリーと投稿件数を表示することで、ユーザーはどのカテゴリーが人気かすぐに把握できます。ショートコード+CSSで自由にデザイン可能で、テーマに応じた微調整も行いやすい方法です。