Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
WPB Cup
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

Hur man endast visar Child Category i din WordPress Post Loop

Vår erfarenhet är att om du lägger till många kategorier i dina WordPress-inlägg kan det börja se lite rörigt ut. Flera kategorier, särskilt överordnade och underordnade kategorier, kan göra dina layouter röriga och göra det svårare för läsarna att hitta det de letar efter.

Skulle det inte vara smartare att bara visa barnkategorin för varje inlägg?

Den här guiden visar hur du justerar din WordPress-temafil så att den bara visar underordnade kategorier i inläggsslingan, vilket ger din blogg en mer strömlinjeformad och användarvänlig känsla.

Showing only child categories inside WordPress post loop

Varför bara visa Child Category i din WordPress Post Loop?

När du skapar en WordPress blogg kan du organisera ditt content med hjälp av kategorier och tags.

För att hjälpa läsarna att hitta intressant content snabbare kan du även skapa child kategorier (eller underkategorier).

Om du till exempel har en blogg om resor kan du skapa en kategori ”Destinations” och sedan ha child-kategorier som ”Europe”, ”America” och ”Australia”.

Som standard visar de flesta WordPress-teman alla huvud- och underordnade kategorier för ett post.

Displaying the child categories only in the WordPress post loop

Men om du använder många kategorier kan dina bloggsidor börja se röriga och komplicerade ut. Det kan också göra det svårare för läsarna att hitta den kategori de är intresserade av.

Av den anledningen kanske du vill dölja ett posts generiska parent-kategorier och endast visa child-kategorierna. Med detta sagt, låt oss se hur du kan visa endast child kategorier i WordPress post loop.

Innan du editerar en WordPress Theme-fil: Viktiga punkter att komma ihåg

Den här guiden klär dig som är bekväm med att koda och editera WordPress theme-filer. Här är några saker du bör göra innan du följer tutorialen:

  1. Först måste du ansluta din website med FTP eller öppna ditt webbhotells filhanterare för att kunna komma åt filerna.
  2. Om du är nybörjare kan du se vår guide för nybörjare om hur du klistrar in snippor från webben i WordPress för att förbereda dig i förväg.
  3. Vi rekommenderar att du skapar en backup eller använder en staging site för att följa den här metoden. På så sätt påverkas inte din live site om något går fel.

Slutligen är den här guiden endast tillämplig på klassiska WordPress themes. Block themes har en annan struktur för temafiler.

Visar endast Child Category i WordPress Post Loop

I den här handledningen visar vi dig hur du redigerar din temafil med hjälp av Bluehosts fil hanterare. Men oavsett vilken hostingleverantör du har bör stegen vara liknande.

Logga först in på din Bluehost-instrumentpanel och navigera till fliken ”Webbplatser”. Klicka sedan på ”Inställningar” på den webbplats du vill redigera.

Bluehost site settings

Därefter rullar du ner till avsnittet Snabblänkar.

Klicka sedan på knappen ”File Manager”.

Accessing a website's file manager in Bluehost

Detta öppnar filhanteraren.

Nu måste du hitta koden i din temafil som är ansvarig för att visa kategorier. Du kan börja göra detta genom att gå till din webbplats public_html-mapp wp-content ” themes ditt aktuella temas mapp.

I det här skedet kan du behöva öppna varje fil och mapp en efter en för att hitta rätt fil att redigera. En sak du kan göra är att försöka hitta kategorirelaterad kod, som has_category eller get_the_category_list. Om du hittar dem bör du vara i rätt fil.

Om du inte hittar rätt mallfil kan du läsa vår fuskguide om mallhierarkin i WordPress och vår guide om hur du hittar rätt temafil att redigera.

Om du använder temat Twenty Twenty-One är filen du ska leta efter filen template-tags i mappen ”inc”. När du har hittat den kan du högerklicka på filen och välja ”Edit”.

Opening the inc folder for the Twenty Twenty One theme in Bluehost file manager

I filen är detta det snippet som ansvarar för att visa kategorier och taggar:

if ( has_category() || has_tag() ) {

				echo '<div class="post-taxonomies">';

				$categories_list = get_the_category_list( wp_get_list_item_separator() );
				if ( $categories_list ) {
					printf(
						/* translators: %s: List of categories. */
						'<span class="cat-links">' . esc_html__( 'Categorized as %s', 'twentytwentyone' ) . ' </span>',
						$categories_list // phpcs:ignore WordPress.Security.EscapeOutput
					);
				}

				$tags_list = get_the_tag_list( '', wp_get_list_item_separator() );
				if ( $tags_list && ! is_wp_error( $tags_list ) ) {
					printf(
						/* translators: %s: List of tags. */
						'<span class="tags-links">' . esc_html__( 'Tagged %s', 'twentytwentyone' ) . '</span>',
						$tags_list // phpcs:ignore WordPress.Security.EscapeOutput
					);
				}
				echo '</div>';
			}
		} else {

Nu när du har hittat rätt kod kan du ersätta hela snippet med det här:

if ( has_category() || has_tag() ) {

    echo '<div class="post-taxonomies">';

    // Get the list of categories
    $categories = get_the_category();
    $child_cat_IDs = array(); // Array to store child category IDs
    $parent_cat_IDs = array(); // Array to store parent category IDs
 
    foreach ( $categories as $category ) {
        if ( $category->parent > 0 ) {
            $child_cat_IDs[] = $category->term_id; // Store the child category ID
        } else {
            $parent_cat_IDs[] = $category->term_id; // Store the parent category ID
        }
    }

    // Output child categories if there are any
    if ( !empty($child_cat_IDs) ) {
        $output = '<span class="cat-links">' . esc_html__( 'Categorized as ', 'twentytwentyone' ) . ' ';
        foreach ( $child_cat_IDs as $cat_id ) {
            $cat_link = get_category_link($cat_id);
            $cat_name = get_cat_name($cat_id);
            $output .= '<a href="' . esc_url($cat_link) . '">' . esc_html($cat_name) . '</a> ';
        }
        $output .= '</span>'; // Close the span tag after the loop
        echo $output; // Output the child category links

    // Output parent categories if there are no child categories
    } elseif ( !empty($parent_cat_IDs) ) {
        $output = '<span class="cat-links">' . esc_html__( 'Categorized as ', 'twentytwentyone' ) . ' ';
        foreach ( $parent_cat_IDs as $cat_id ) {
            $cat_link = get_category_link($cat_id);
            $cat_name = get_cat_name($cat_id);
            $output .= '<a href="' . esc_url($cat_link) . '">' . esc_html($cat_name) . '</a> ';
        }
        $output .= '</span>'; // Close the span tag after the loop
        echo $output; // Output the parent category links
    }

    // Handle tags
    $tags_list = get_the_tag_list('', wp_get_list_item_separator());
    if ( $tags_list && ! is_wp_error( $tags_list ) ) {
        printf(
            /* translators: %s: List of tags. */
            '<span class="tags-links">' . esc_html__( 'Tagged %s', 'twentytwentyone' ) . '</span>',
            $tags_list // phpcs:ignore WordPress.Security.EscapeOutput
        );
    }

    echo '</div>'; // Close post-taxonomies div
}
} else {

Den här kodsnutten identifierar först alla kategorier som tilldelats inlägget. Sedan kontrolleras om varje kategori har en överordnad kategori.

Om det gör det betyder det att det är en underordnad kategori och den läggs till i visningslistan. Föräldrakategorier hoppas över, vilket resulterar i en renare, mer specifik visning av ditt inläggs kategorisering.

Så här ska det se ut när du byter ut koden:

Making changes to the code that displays the category list in the post loop using the Bluehost file manager

När du är klar sparar du bara dina ändringar.

Nu måste du besöka en post som har en eller flera child kategorier. Du kommer att se att den överordnade kategorin är dold och WordPress visar nu endast kategorierna för barnen.

Result of editing the code to display only the child category in the post loop

Vi hoppas att den här artikeln hjälpte dig att lära dig hur du bara visar barnkategorin i dina WordPress-inlägg. Du kanske också vill läsa vår artikel om hur du utformar enskilda kategorier på olika sätt i WordPress och vår nybörjarguide om hur du söker efter kategori i WordPress.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

Avslöjande: Vårt innehåll stöds av våra läsare. Det innebär att om du klickar på några av våra länkar, kan vi tjäna en provision. Se hur WPBeginner finansieras, varför det är viktigt, och hur du kan stödja oss. Här är vår editoriala process.

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

Den ultimata WordPress-verktygslådan

Få GRATIS tillgång till vår verktygslåda - en samling WordPress-relaterade produkter och resurser som varje professionell användare bör ha!

Reader Interactions

10 kommentarerLämna ett svar

  1. Mike

    Managed it!

    foreach((get_the_category()) as $childcat) {
    $parentcat = $childcat->category_parent;
    if (cat_is_ancestor_of(10, $childcat)) {
    echo get_cat_name($parentcat);
    }
    }

  2. MIke

    I have three main categories and this code is successfully working in my single page loop to echo the actual selected category name.
    I now want to echo the parent of the category. The complication is that I have two layers below the main category (3 levels) and I want to echo the one level parent not the top level parent. It seems easy to echo the top parent, but I haven’t seem any code to return the child level category of a grandchild category?

  3. amnachohan

    Will it work outside the loop ?

  4. Marian Rick

    This is a great piece of code. Thanks a lot so far!

    For one of my projects I have to go further, and display only the lowest subcategory. So there may be three levels, (Forms -> Squares -> Big Squares). With this code all subs (Squares -> Big Squares) are displayed. How can I tell this code to repeat the process till only the last child is found and displayed?

    If you’ve got any solutions for that you are my heroes once again! Keep up your great work and blog!

  5. GoranJakovljevic

    is it possible to do this for 2 categories instead of single one?

  6. gashface

    How Would I include &orderby=ID ?

  7. Andus Beckus

    This is great thanks!

    But how do you display children of all categories and not just cat 10?

    Be great if someone could help with this. :)

    • Editorial Staff

      If you are trying to display a list of all child categories, then use wp_list_categories() function. It has parameters that allow you to list only child categories or only parent categories. But that doesn’t work for the case that we are talking about in this article.

      Administratör

      • Mattia

        great, but if I want to show not ”category 10” but ”current category”?

  8. Keith Davis

    Great snippets of info from you guys.
    I really have to start to get into this PHP.

    Great site boys and I notice that you are up to Pagerank 6!
    How about a couple of posts on upping your pagerank.

Lämna ett svar

Tack för att du väljer att lämna en kommentar. Tänk på att alla kommentarer modereras enligt våra policy för kommentarer, och din e-postadress kommer INTE att publiceras. Vänligen använd INTE nyckelord i namnfältet. Låt oss ha en personlig och meningsfull konversation.