「カテゴリー」ウィジェットで親カテゴリーのみを表示する方法

Cocoonカスタマイズ集
この記事は約3分で読めます。
記事内に広告が含まれています。

はじめに

以下の質問に回答します。

カテゴリーを親子構造で運用している場合、サイドバーなどに設置する「カテゴリー」ウィジェットでは、親カテゴリーのみをリスト表示したいという要件がよくあります。

しかし、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による簡易的な対応、またはナビゲーションメニューを活用する方法など、目的に応じた選択肢が用意されています。

親カテゴリーをナビゲーションの入口として使うのか、単なる分類表示として使うのかを明確にしたうえで、最適な方法を選択するとよいでしょう。

タイトルとURLをコピーしました