はじめに
以下の質問に回答します。
カテゴリーを親子構造で運用している場合、サイドバーなどに設置する「カテゴリー」ウィジェットでは、親カテゴリーのみをリスト表示したいという要件がよくあります。
しかし、WordPress標準の「カテゴリー」ウィジェットには、親カテゴリーのみを表示するための設定項目は用意されていません。
そのため、意図した表示を実現するには、いくつかの工夫が必要になります。
この記事では、この方法について説明します。
完成イメージ

実装手順
PHPで実装する場合
以下の手順で実装します。
- ラベルウィジェットでの設定
外観→ウィジェット→カテゴリーで表1に示す項目を設定をします。
ウィジェット 項目 設定 ドロップダウンで表示 オフ 投稿数を表示 オフ 階層を表示 オフ - ラベルPHPを追加
以下のコードをfunctions.phpに追加します。
add_filter('widget_categories_args', function ($args) { $args['parent'] = 0; return $args; });
CSSで実装する場合
以下の手順で実装します。
- ラベルウィジェットでの設定
外観→ウィジェット→カテゴリーで表3に示す項目を設定をします。
ウィジェット 項目 設定 ドロップダウンで表示 オフ 投稿数を表示 オフ 階層を表示 オン - ラベルCSSを追加
以下のコードをfunctions.phpに追加します。
.widget_categories .children { display: none; }
「ナビゲーションメニュー」ウィジェットを利用する場合
「ナビゲーションメニュー」ウィジェットを利用すれば、ノーコードで親カテゴリーのみを設定したメニューを作成し、親カテゴリーのみを表示できます。
ナビゲーション用途が主目的の場合は、「カテゴリー」ウィジェットよりも柔軟に構成できる点が特長です。
管理画面とフロント表示で異なる投稿数の扱いの違い
管理画面の表示

管理画面に表示されるカテゴリー一覧では、親カテゴリー・子カテゴリーそれぞれに直接付与された投稿数が表示されます。
例えば、投稿に親カテゴリーのみを付与した場合は親カテゴリーが1件、子カテゴリーのみを付与した場合は子カテゴリーが1件として、それぞれ独立してカウントされます(図1参照)。
親子関係は考慮されず、あくまで「そのカテゴリーが投稿に付与されたかどうか」が基準となります。
「カテゴリー」ウィジェットの表示

「カテゴリー」ウィジェットに表示される親カテゴリーの投稿数は、管理画面とは異なるルールで算出されます。
ウィジェットでは、投稿が親カテゴリーに直接付与されているかどうかに関係なく、子カテゴリーに属する投稿数も親カテゴリーの件数として含めて表示されます(図2参照)。
そのため、子カテゴリーのみに投稿を付与している場合であっても、親カテゴリーの投稿数が増加して表示されることがあります。
また、カテゴリーアーカイブで親カテゴリーを選択した場合も同様に、デフォルトの挙動では子カテゴリーに属する投稿が全て一覧に含まれます。
さいごに
今回紹介した方法を使えば、「カテゴリー」ウィジェットで親カテゴリーのみを表示することが可能になります。
PHPによる制御、CSSによる簡易的な対応、またはナビゲーションメニューを活用する方法など、目的に応じた選択肢が用意されています。
親カテゴリーをナビゲーションの入口として使うのか、単なる分類表示として使うのかを明確にしたうえで、最適な方法を選択するとよいでしょう。

