WordPressでカテゴリページにサブカテゴリを表示する方法

WPBeginnerでは、読者が探しているものを簡単に見つけられるように、ナビゲーションを改善するためのよりスマートな方法を常に探しています。スムーズなブラウジング体験は、ユーザーのエンゲージメントを維持し、リピートを促します。

幸いなことに、WordPressではカテゴリとサブカテゴリを使用して投稿を整理する簡単な方法が提供されています。カテゴリページにサブカテゴリを直接表示することで、ユーザーエクスペリエンスを大幅に向上させ、サイト全体のナビゲーションを効率化できます。

この記事では、WordPressのカテゴリページでサブカテゴリを表示する方法をステップバイステップでご紹介します。必要なコードスニペットと手順を提供し、ウェブサイトのナビゲーションをこれまで以上に改善します。始めましょう!

WordPressでカテゴリページにサブカテゴリを表示する

カテゴリページにサブカテゴリを表示する理由

WordPressウェブサイトの投稿を作成する際に、コンテンツを適切にカテゴリ分けすることで、検索エンジンに最適化し、サイトのナビゲーションを改善できます。これにより、サイトへのトラフィックが増加し、訪問者は探しているコンテンツをより簡単に見つけることができるようになります。

一部のウェブサイトでは、サイトの構造を簡素化するために サブカテゴリ を使用することが理にかなっています。

例えば、「スポーツ」というトップレベル(親)カテゴリがあるとします。その下に「NFL」、「NBA」、「MLB」というサブカテゴリを作成できます。

WordPressでサブカテゴリを使用する例

訪問者が「スポーツ」カテゴリをクリックすると、スポーツカテゴリとそのサブカテゴリのすべての投稿が表示されます。ただし、サブカテゴリのリストは表示されません。これにより、NFLやNBAの投稿だけに絞り込むのが難しくなります。

カテゴリページにサブカテゴリのリストを表示すると、サイトのナビゲーションが改善されます。これは、ウェブサイトのカテゴリウィジェットでサブカテゴリを非表示にすることを決定した場合に特に当てはまります。

トップレベルカテゴリのみを表示

そうすれば、例えば、あなたのサイトの訪問者はすべてのスポーツ投稿からNFLだけに簡単に移動できます。さらに良いことに、NFLページで同じサブカテゴリを表示し続けることができるので、NFLからNBAに簡単に切り替えることができます。

それを踏まえて、WordPressのカテゴリページにサブカテゴリを表示する方法を見てみましょう。

WordPressでカテゴリページにサブカテゴリを表示する方法

カテゴリアーカイブページにサブカテゴリを表示するには、テーマファイルにコードを追加する必要があります。サイトにコードを追加するのにヘルプが必要な場合は、WordPressにWeb上のスニペットを貼り付けるための初心者ガイドを参照してください。

まず、テーマのフォルダに入り、category.php という名前のカテゴリアーカイブファイルを探す必要があります。

そのファイルが表示されない場合は、作成する必要があります。単純にarchive.phpを複製し、category.phpと名付けてください。

注意: テーマに category.php または archive.php が含まれていない場合、おそらく WordPressテーマフレームワーク を使用しており、category.php を手動で作成する必要があります。アーカイブファイルの作成方法を学ぶための良い出発点は、WordPressでカスタムアーカイブページを作成する方法 に関するガイドです。

次に、ループの直前に次のコードをcategory.phpに追加します。

<?php
if (is_category()) {
    $this_category = get_category($cat);
    }
    ?>
    <?php
    if($this_category->category_parent)
    $this_category = wp_list_categories('orderby=id&show_count=0
    &title_li=&use_desc_for_title=1&child_of='.$this_category->category_parent.
    "&echo=0"); else
    $this_category = wp_list_categories('orderby=id&depth=1&show_count=0
    &title_li=&use_desc_for_title=1&child_of='.$this_category->cat_ID.
    "&echo=0");
    if ($this_category) { ?> 
 
<ul>
<?php echo $this_category; ?>
 
</ul>
 
<?php } ?>
コードスニペットをループの直前の category.php に追加する

これで、カテゴリページにアクセスすると、サブカテゴリのリストが表示されます。

デモサイトでは、スポーツカテゴリページにNFL、NBA、MLBのサブカテゴリへのリンクが表示されます。

カテゴリページでのサブカテゴリのプレビュー

NFLリンクをクリックすると、NFLサブカテゴリページに移動します。

ここでスポーツのサブカテゴリへのリンクを引き続き表示できるため、さまざまな種類のスポーツ間を簡単に切り替えることができます。これにより、サイトのナビゲーションを大幅に簡素化できます。

サブカテゴリページでのサブカテゴリのプレビュー

WordPressのカテゴリとサブカテゴリに関するエキスパートガイド

このチュートリアルが、WordPressのカテゴリページにサブカテゴリを表示する方法を学ぶのに役立ったことを願っています。WordPressでカテゴリとサブカテゴリを表示することに関連する他のガイドも参照することをお勧めします。

この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。 TwitterFacebookでもフォローできます。

開示:当社のコンテンツは読者によってサポートされています。これは、当社のリンクの一部をクリックすると、当社が手数料を得る可能性があることを意味します。WPBeginnerがどのように資金提供されているか、それがなぜ重要か、そしてどのように私たちをサポートできるかについては、こちらをご覧ください。当社の編集プロセスはこちらです。

究極のWordPressツールキット

無料のツールキットにアクセスしましょう - すべてのプロフェッショナルが持つべきWordPress関連の製品とリソースのコレクションです!

読者とのインタラクション

73 CommentsLeave a Reply

  1. Hello,

    カテゴリ.php ファイルを含まないテーマを使用しています。カテゴリと投稿は、このテーマに付属するプラグインフレームワーク内にある archive.php を通して表示されます。

    • これは、テーマが何を提供しているかをよく見ない多くの人が直面する問題です。別のテーマを選択することをお勧めします。今回は、レイヤー、タグ、変更可能なメニュー、ブロックエディター、モバイルレスポンシブを備えたテーマを探してください。これらの基本的な機能を提供する無料のテーマはたくさんあります。最初からニーズを満たさないテーマを微調整するよりも、求めている柔軟性をサポートするテーマを使用してサイトを強化し続ける方がはるかに簡単です。将来的に継続的に微調整することになりますが、それは楽しくありません。私を信じてください!!

      このサイトでは、レスポンシブテーマとその機能に関する投稿を掲載しています。より良いテーマを選択した後、テーマを切り替えるためのリンクはこちらです。非常に簡単なプロセスです。
      https://www.wpbeginner.com/beginners-guide/how-to-properly-change-a-wordpress-theme/

  2. このコードを category.php ファイルに貼り付けましたが、mysite.com/category にアクセスしても表示されません。何か提案はありますか?

    • コードがcategory.phpのループの前に配置されていることを確認したいはずです。もしそこに正しく配置されているなら、通常の表示を上書きするようなものがあるかどうか、お使いのテーマのサポートに確認することをお勧めします。

      管理者

  3. Code Snippetsプラグイン経由でこのコードを挿入しましたが、他のコードの挿入には成功していましたが、今度は「ホワイトスクリーンの死」と呼ばれるものが発生しました!ウェブサイトのページ /wp-admin でさえもです。

    管理ダッシュボードが見えない場合、これを修正する方法を知っている人はいますか?

  4. このコードは私が望むように正確に動作しません。ナビゲーションのような適切なカテゴリの配置が必要です。
    親カテゴリ
    孫カテゴリ 1
    孫カテゴリ 2
    子孫カテゴリ 1
    兄弟カテゴリ

  5. Hello,

    カスタム投稿タクソノミーを作成した場合、これをどのように利用できますか?

    メインカテゴリを最初に表示し、次にサブカテゴリ、さらにその下へと、投稿ページまでリスト表示したいのですが?

    カスタム投稿カテゴリのためにこのコードを変更できますか?

    ありがとう

  6. しかし、親カテゴリを非表示にしたくありません。サブカテゴリページをクリックしたときに、親カテゴリとサブカテゴリの両方にすべてのサブカテゴリを表示したいです。

  7. この素晴らしい投稿をありがとうございます。このコードでカテゴリページ用のフィルターを作成することができました。しかし、メインカテゴリのすべての投稿を表示するリンクを付けたいのです。サブカテゴリフィルターリンクのいずれかをクリックして、メインカテゴリのすべての投稿に戻りたい場合です。例えば、次のような感じです。
    すべて (20) サブカテゴリ 1 (12) サブカテゴリ 2 (5)。サブカテゴリ 3 (3)

    それは可能ですか?そして、リンクの一部としてその数を取得するにはどうすればよいですか?

  8. Hi

    コーディングについては何も知りません。コンテンツをより整理するために、WordPressブログにサブカテゴリを追加したいと思っています。これを機能させるには、どこにコードを貼り付ければよいですか?具体的に何が起こりますか?もしよろしければ、もう少し詳しく教えていただけますか。

  9. 投稿ありがとうございます。
    これはWooCommerceでも機能しますか?

    ありがとう

  10. この投稿は古いことは承知していますが、まさに現在のプロジェクトで求めているものです。
    カテゴリと一緒に画像を表示させる方法はありますか?
    過去にこのプラグインを使って、カテゴリに画像を追加したことがあります – カテゴリ画像

    <?php if( function_exists('z_taxonomy_image') AND get_option('z_taxonomy_image'.$cat_id)” ) z_taxonomy_image($cat_id); ?>

    コードでどのように実装すればよいか分かりません。

  11. こんにちは、

    コードをありがとうございます。

    カテゴリ構造は以下のようになっています:

    メインカテゴリ: ホーム改善
    サブカテゴリ: 屋根工事
    グランドカテゴリ: 雨どい

    このページでは、すべてのチャイルドカテゴリを表示したいのですが、それは問題なく表示されます。

    このページでは、すべての孫カテゴリを表示したいのですが、すべての子カテゴリが表示されます。

    このページでは:何も表示したくありません。なぜなら、これが最後のページだからです。

    どうすれば修正できるか教えてください。

    コードをこのように使用しました:

    category_parent)
    $this_category = wp_list_categories(‘orderby=id&show_count=0&hide_empty=0&title_li=&use_desc_for_title=1&child_of=’.$this_category->category_parent.
    “&echo=0”); else
    $this_category = wp_list_categories(‘orderby=id&depth=1&show_count=0&hide_empty=0&title_li=&use_desc_for_title=1&child_of=’.$this_category->cat_ID.
    “&echo=0”);
    if ($this_category) { ?>

  12. 私を愚か者と呼んでくださいが、このコードはどこに置けばいいですか?header.php、index.php、functions.phpのどれですか?

    参考までに、メインページで画像をクリックすると(現在は)メインカテゴリに移動するページがあります。

    私の目標は、画像をクリックするとサブカテゴリのリストが表示されるページに移動し、投稿を並べ替えられるようにすることです!

  13. これを使って、カテゴリページにサブカテゴリごとに投稿を表示することは可能ですか?

    例:

    **メインカテゴリページ**

    ** サブカテゴリ #1 **
    – 投稿 #1
    – 投稿 #2

    ** サブカテゴリ #2 **
    – ポスト #3
    – ポスト #4

  14. wp 4.0以降、デバッグがtrueの場合、以下のエラーが発生します。

    Notice: get_all_category_ids はバージョン4.0以降使用されていません!代わりに get_terms() を使用してください。in

    これはオランダ語のエラーで、英語では非推奨と表示されます。新しい標準で動作するようにコードを調整するにはどうすればよいですか?

  15. これについてありがとうございますが、orderby引数を変更しても、実際の表示順序に影響がないようです。他に同様の問題を抱えている方はいらっしゃいますか?解決策はありますか?

  16. この役立つ投稿をありがとうございます。
    カテゴリの一部を除外して、表示されないようにしたいのですが、どうすればよいですか?

  17. こんにちは

    上記のスクリプトについて、いくつか助けが必要です。USA、UK、イタリア、フランスなどの国々のカテゴリリストがあり、各国には都市がサブカテゴリとしてあります。
    このスクリプトは、イタリアをクリックすると都市のサブカテゴリがサイドバーに表示されるため、うまく機能しますが、ページや投稿内をクリックすると都市が消えてしまい、サイドバーには国名のみが表示されます。
    投稿内の都市が残るようにするにはどうすればよいですか?また、AboutやHomeのようなページをクリックしたときに都市が消えるようにするにはどうすればよいですか? Huemanテーマを使用しており、ヘッダーメニューに都市を表示させる必要もあります。それにはいくら請求されますか? kid_punky @ yahoo.comまでメールしてください。

  18. eコマースのアパレルサイトでJigoshopプラグインを使用しています。
    Jigoshopのカテゴリ追加で
    MEN
    WOMAN
    BOYS
    OTHER
    サブカテゴリもあります。
    サイドバーにメインカテゴリを表示し、カテゴリをクリックしたらサブカテゴリが表示されるようにしたいです。

  19. 素晴らしい投稿ありがとうございます。このトリックは機能しますが、質問があります。あなたのhttps://www.wpbeginner.com/deals/のカテゴリページのようにサブカテゴリを表示したいです。CSSを追加して、あなたのディールページのようなセクションページを作成するにはどうすればよいか教えてください。

    • Mitulさん、CSSはソースで確認できますので、ご自由にいじってみてください。条件付きタグをテンプレートで使用して、サブカテゴリを異なる方法で表示したり、サブカテゴリ用の新しいテンプレートを作成したりできます。

      管理者

  20. こんにちは。
    あなたのコードを成功裏に使用しており、感謝しています。
    少し困っています。コードから「depth=”1″」を削除しましたが、サイドバーにメインカテゴリが表示されません。サブカテゴリのみが表示されます。
    親カテゴリとサブカテゴリの両方を表示するにはどうすればよいですか?
    ありがとうございます。

  21. こんにちは。これはWordPress 3.3.1で動作しますか?

    また、この質問は愚かに聞こえるかもしれませんが、念のため確認させてください。

    このコードは、現在表示しているカテゴリページに固有のサブカテゴリをサイドバーに表示できるようにするということですね?別の言い方をすると、ホームページにいます。メインナビゲーションの「Illinois」をクリックします。すると、Illinois の(カテゴリ)アーカイブページに移動し、サイドバーがあります。そのサイドバーには、Chicago、Evanston、Skokie(サブカテゴリ)が表示されます。次に、「New York」をメインナビゲーションでクリックすると、New York の(カテゴリ)アーカイブページに移動し、そのページの右側の列には、NYC、Albany、Buffalo、Rochester が表示されるということですか?

    私の理解は正しいですか、それともアプリケーションを誤解していますか?

    本当にありがとうございます!

  22. コメントが正しく投稿されませんでした…再度投稿します。

    メインカテゴリ

    サブカテゴリ1、サブカテゴリ2、サブカテゴリ3、サブカテゴリ4、サブカテゴリ5、

    サブカテゴリ-6、サブカテゴリ-7、など…………。

  23. メインカテゴリのアーカイブページにサブカテゴリのリストを表示したいのですが、例えば次のようになります。

    <メインカテゴリ>

    <サブカテゴリ-1>、<サブカテゴリ-2>、<サブカテゴリ-3>、<サブカテゴリ-4>、<サブカテゴリ-5>、<サブカテゴリ-6>、など…

    この記事で提供されているコードをそのままコピーしましたが、機能しません…カテゴリページには何も表示されません。

    お願いします。

  24. こんにちは、解決策が見つからないので、私がやろうとしていることの修正方法があることを願っています。

    メインカテゴリの下にいくつかのサブカテゴリがありますが、セカンドティアのカテゴリはメインのチャイルドカテゴリではありません。セカンドティアの下のサブカテゴリのみがチャイルドです。しかし、それでもメインカテゴリのカテゴリのループを含めたいのですが、実際には投稿もチャイルドもありません。それ以下のカテゴリのループを表示するフィルターを見つけましたが、そのカテゴリに投稿が1つある場合にのみページが表示されます…

    ローカルホスト、これは声に出して言うとかなり複雑に聞こえますね、ハハ… 私が何を言っているのか理解してくれるといいのですが。

    要するに、投稿がなくてもカテゴリページを表示したいのです。カスタムテーマと各カテゴリのテンプレートファイルを使用しています。

    Hope someone has the answer. :)

    Cheers

    • @robolist 投稿がないカテゴリを持つ意味は何ですか?そこにあるべきではないように思えます。あなたが何をしているのかわかるように、詳しく説明していただけますか?代替案を検討する必要があるかもしれません。

      • @wpbeginner thanks for getting back so fast :)

        OK、理由は、メインカテゴリをURL構造に表示したくないからです。最終的な投稿のURLは異なりますが。メインカテゴリは「目的地」のようなものになり、その下に国があります。各国には子都市があり、都市の下に投稿があります。メインメニューには「目的地」が表示され、その下のすべての投稿のループが表示されます。次にサブメニューに国が表示され、都市が表示されます。国と都市の両方にそれぞれの投稿のループが含まれます。都市ランディングページにたどり着く頃には、URLが「.com/destinations/country/city/」になることを望んでいません。代わりに「.com/country/city/」にしたいのです。

        私のジレンマが見えますか?

        • @robolist より良い方法があるようです。目的地カテゴリを完全に削除する方が理にかなっていませんか。目的地という名前のページを作成し、カスタムページテンプレートを使用して、wp_list_categories() 関数で WordPress が持つすべてのカテゴリを出力するようにします。これで、.com/country/city/ のような URL は引き続き使用できます。ユーザーが .com/destinations/ のようなページにアクセスすると、<< そこにはすべての国がリストされているのが見えます。それは理にかなっていますか?そうでない場合は、あなたが何をしようとしているのか理解できていないのかもしれません。

        • @wpbeginner that does sound better and makes sense… But i am not familiar with the wp_list_categories() function, although i have seen it around. This could be the one. thanks so much for your help, i will go and give that a try :) thanks so much…

          このサイトの素晴らしいチュートリアルもすべてありがとうございます…

        • @robolist wp_list_categories() は非常にシンプルで強力な関数です。http://codex.wordpress.org/Template_Tags/wp_list_categoriesIt を使用すると、カスタムページテンプレートのどこにでもカテゴリを表示できます。https://www.wpbeginner.com/wp-themes/how-to-create-a-custom-page-in-wordpress/ したがって、カスタムページテンプレートを作成します。テンプレート領域にコード wp_list_categories(); を貼り付けます。都市を表示したくない場合は、child=0 を設定してください。おそらく、そこに表示したいのは国だけでしょう。次に、ユーザーが国をクリックすると、都市すべてが表示されます。お好みに合わせてスタイルを設定すれば、完成です。

        • @wpbeginner

          hey guys, thanks so much for your advice last night, it worked a treat :). I am however stuck on the permalink structure now and would be very grateful if you and any tips for me again :)

          私の最終投稿は、3層のカテゴリ構造「continent/country/city/post/」(ご提案いただいたように、destinationsは現在ページになっています)の最後にあります。しかし、投稿の最終URLは4階層にしたくなく、3階層にしたいと考えています。そのため、希望するパーマリンクは country/city/post/… です。パーマリンク構造から最上位の親カテゴリを削除する方法はありますか?現在、'/%category%/%postname%-%post_id%/' のように設定していますが、これは自動的にすべての親カテゴリを取得します。最上位カテゴリを再度ページにする必要がありますか、それとも他に良い方法がありますか?事前にご協力いただきありがとうございます。

          Cheers

        • @robolist パーマリンクのリライトルールを書くことはできますが、トップカテゴリをページにするよりも少し難しいです。簡単な解決策:大陸をページにする。難しい解決策:パーマリンクルールを書き換える。正直なところ、大陸は必要ですか?ほとんどの人は北米や南米で検索しません…国を探すだけです…

        • @wpbeginner 返信ありがとうございます。

          大陸があることでブログの整理に役立ちます。ブログは最終的にかなり大きくなるため、大陸というよりは地域のようなものです。そのため、含めたいと思っています。リライトルールを学ぶことができれば、新しい都市/国が追加されるたびに地域ページに余分なカテゴリIDを追加し続ける必要がなくなります。デスティネーションで設定している方法は完璧です。なぜなら、これ以上地域を追加することはないので、そのページを再び触る必要はないからです。:)

          i dont suppose you could point me in the right direction for the rewrite? :) I would be ever so grateful

          これまでのご協力に心より感謝いたします

        • @robolist 書き直しにはカスタムコードの記述が必要であり、それは有料となります。ガイドについてはGoogleで検索するか、コードに取り組むのが好きならWordPressのコアを確認してください。

        • @wpbeginner I would love to hire you guys but just dont have a budget for that :(, plus i would love to learn how to do it myself. but thanks so much for all the help you have given me on this. if i do fail at my attempt then i will just go for the simple way out and create pages for the regions. thanks again :)

  25. これ、解決しましたか?私も今同じことを達成しようとしています。サブカテゴリがある場合にのみ、カテゴリページにサブカテゴリを表示したいのです。「カテゴリなし」という表示が邪魔で困っています。

  26. こんにちは!英語が下手でごめんなさい。

    あなたのコードを使いたいのですが、サイドバーではなく。メインカテゴリをクリックしたときに、メインメニューの代わりにナビゲーションバーにサブメニューが表示されるようにしたいです。

    すみませんが、私は開発者ではありません。コードをどこに貼り付ければよいですか?

    In category.php ? :(

    ありがとうございます

  27. コードは完成していません。

    «…
    if ($this_category) {
    //サブカテゴリのリストを表示するためのコードが必要です。
    }?>
    …»

    このような感じです。
    if ($this_category) {
    printf( $this_category );
    }

    追伸: «Twenty Ten» 3.0.1 を作業中です

  28. このコードはWPのアップグレード以降機能しなくなったと聞きました。私もパースエラーが発生しました。

  29. こんにちは、
    このコードはまさに私が求めていたものですが、サイドバーではなく、実際のcategory.phpのコンテンツセクションで使用したいのです。とにかく、貼り付けてみましたが、パースエラーが発生しました。コードスニペットの最後に何か足りないものはありますか?
    よろしくお願いします。
    -レイチェル

  30. 私はこれをずっと探していたので、これは私にとって素晴らしい出発点です。

    これを詳しく説明して、例えば、1つの投稿タイトルと抜粋を表示し、その後、各サブカテゴリからさらに4つのタイトルをdivに表示する方法があるかどうか疑問に思いました。

    I have been trying to find a way to do this for months but have never found anyone able to assist. I even offered a small payment but no-one came forward :)

    Thanks if anyone can offer any advice :)

    Karl

  31. こんにちは、このコードをありがとうございます。テンプレートで動作しています。カテゴリに子がない場合に、このコード全体を実行しないようにするにはどうすればよいですか?子がない場合、空のリストが作成され、「カテゴリがありません」というテキストが表示されます。Yoastのコードで設定していた方法は次のとおりです。

    cat_ID) != “”) { ?>

    サブカテゴリ:
    cat_ID);?>



    サブカテゴリがなければ何も表示されません。あなたのコードはより良いですが、サブカテゴリがある場合にのみ表示されるようにする必要があります。どうすればこれを達成できますか?どんな提案でもありがとうございます。

  32. 投稿ありがとうございます。投稿は正常に表示されましたが、サブカテゴリのことを忘れていました…この方が理にかなっています。

  33. こんにちは、

    サイドバーでこれを達成しようとしていますが、リンクの代わりに、サブカテゴリに最近の投稿をリストしたいと考えています。

    そしてもちろん、これはすべてのカテゴリおよびサブカテゴリページ、ならびに単一の投稿で発生します。

    これが可能かどうかはわかりません。しかし、必死に調べてきましたが、プログラマーではないことが助けになりません。

コメントを残す

コメントを残していただきありがとうございます。すべてのコメントは、当社のコメントポリシーに従ってモデレーションされますので、ご了承ください。メールアドレスは公開されません。名前フィールドにキーワードを使用しないでください。個人的で有意義な会話をしましょう。