WordPressの投稿ループで親カテゴリのみを表示する方法

ウェブサイト上のコンテンツを整理することの重要性は、誰もが知っています。WPBeginnerでは、カテゴリとサブカテゴリを使用することで、訪問者がサイトを探索しやすくなり、検索結果でのランキングも向上すると理解しています。優れたカテゴリ構造は、訪問者が必要なものを見つけるのにも役立ちます。

ほとんどのWordPressテーマは、サブカテゴリを含め、投稿に関連付けられたすべてのカテゴリを自動的に一覧表示します。これは訪問者にとって非常に混乱を招く可能性があります。しかし、最近、読者から単一投稿ページでメインカテゴリのみを表示したいという要望がありました。多くのサブカテゴリに圧倒されるのではなく、メインのトピックに焦点を当ててほしいと考えていました。

この記事では、簡単なコードを使用してWordPressのカテゴリ表示方法を変更する方法を紹介します。これにより、単一投稿ページでメインカテゴリのみを表示できるようになり、訪問者にとってのサイト体験を大幅に向上させることができます。

WordPressループで親カテゴリのみを表示する

WordPressで親カテゴリのみを表示するのはいつか

多くのウェブサイト所有者は、ウェブサイトの構造を作成するために、親カテゴリと子カテゴリを使用しています。

例えば、旅行ブログでは、各地域を親カテゴリ、都市を子カテゴリとして、旅行先をカテゴリ別に整理している場合があります。

親カテゴリと子カテゴリを表示

同様に、フードブログでは、親カテゴリと子カテゴリに整理されたレシピを公開することがあります。たとえば、親カテゴリは料理の種類、子カテゴリは料理の種類にすることができます。

現在、ほとんどのWordPressテーマでは、投稿に関連付けられたすべてのカテゴリを一覧表示するために、the_category() テンプレートタグを使用しています。

この関数は効率的ですが、すべてのカテゴリをアルファベット順に表示し、親/子の関係を完全に無視します。

それでは、この動作を変更し、WordPressループで親カテゴリのみを表示する方法を見てみましょう。

WordPress投稿ループで親カテゴリのみを表示する

このチュートリアルでは、WordPressテーマファイルを編集する必要があります。以前にこれを実行したことがない場合は、WordPressにWebからスニペットをコピー&ペーストする方法に関する記事をご覧ください。

まず、テーマのfunctions.phpファイルにコードを追加するか、コードスニペットプラグインを使用する必要があります。WPCodeは、サイトを壊すことなくコードを追加でき、スマートコードスニペット検証により一般的なコードエラーを防ぐことができるため、WPCodeの使用をお勧めします。

WordPressでサイトを壊さずにカスタムコードを簡単に追加する方法に関するガイドで詳細をご覧ください。

このチュートリアルでは、WPCodeの無料版を使用します。フルバージョンにはすべての高度な機能はありませんが、始めるために必要なものはすべて揃っています。

まず、WPCodeプラグインをインストールして有効化する必要があります。ヘルプが必要な場合は、WordPressプラグインのインストール方法に関するステップバイステップガイドに従ってください。

有効化したら、WPCode » 新規スニペットページに移動できます。

WPCode で新しいスニペットを追加する

これにより、カスタムスニペットを作成できるページが開きます。

まず、スニペットのタイトルを追加する必要があります。その後、以下のコードスニペットをコードプレビューペインにコピー&ペーストできます。

function wpb_get_parent_terms($taxonomy = 'category')
{
    $currentPost = get_post();
    $terms       = get_the_terms($currentPost->ID, $taxonomy);

    if (is_wp_error($terms)) {
        /** @var \WP_Error $terms */
        throw new \Exception($terms->get_error_message());
    }

    $map = array_map(
        function ($term) use ($taxonomy) {
            return '<a href="' . esc_url(get_term_link($term->term_id,
                    $taxonomy)) . '" title="' . esc_attr($term->name) . '">
                ' . $term->name . '
                </a>';
        },
        array_filter($terms, function ($term) {
            return $term->parent == 0;
        })
    );

    return implode(', ', $map);
}
WPCodeにタイトルとコードスニペットを追加する

次に、コードタイプのドロップダウンメニューから「PHPスニペット」オプションを選択し、「非アクティブ」スイッチを「アクティブ」に切り替える必要があります。

最後に、「スニペットを保存」ボタンをクリックして設定を保存してください。

WPCodeで、コードタイプとしてPHPを選択し、スニペットをアクティブに切り替えます

このコードは、単純に新しい関数 wpb_get_parent_terms() を作成します。デフォルトでは、この関数は親カテゴリのみを表示します。

次に、この関数を、親カテゴリのみを表示したいWordPressテーマファイルに配置する必要があります。

どのテンプレートファイルを確認すべきかを判断するために、初心者向けのWordPressテンプレート階層チートシートを参照してください。

基本的には、WordPressループ内の the_category() テンプレートタグを探します。それを見つけたら、以下のコードに置き換える必要があります。

<?php wpb_get_parent_terms(); ?> 

このコードは、親カテゴリのみを表示します。

親またはスタンドアロンカテゴリが複数ある場合、それらのカテゴリもすべて表示されます。

親カテゴリのみ表示

このコードスニペットは、他のすべてのタクソノミーでも機能します。例えば、WooCommerceの製品カテゴリや、お持ちのカスタムタクソノミーなどです。

コードを次のように変更するだけです。

<?php wpb_get_parent_terms( 'product_cat '); ?>

このコードは、WooCommerceストアの製品カテゴリを表示します。

また、製品の親カテゴリまたはスタンドアロンカテゴリのみを表示します。

親商品カテゴリのみ表示

カスタムタクソノミーを表示したい場合は、product_cat をカスタムタクソノミー名に置き換えてください。

WordPressでカテゴリを表示するための専門家向けガイド

この記事が、WordPress投稿の親カテゴリのみを表示する方法を学ぶのに役立ったことを願っています。WordPressカテゴリの表示に関連する他のガイドも参照したいかもしれません。

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

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

究極のWordPressツールキット

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

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

11 CommentsLeave a Reply

  1. 子カテゴリのみを表示するにはどうすればよいですか?(画像のように、「Thesis」の上にあるようなもの)

  2. 投稿に日付スタンプを付けてください。そうすれば、いつ書かれたかがわかり、5年前のコードスニペットを含めないようになります。

返信する

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