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

Jak wyświetlić tylko kategorię podrzędną w twojej pętli wpisów WordPress?

Z naszego doświadczenia wynika, że jeśli dodasz wiele kategorii do twoich wpisów w WordPressie, to może zacząć się robić trochę tłoczno. Wiele kategorii, zwłaszcza nadrzędnych i podrzędnych, może zagracać twój układ i utrudniać czytelnikom znalezienie tego, czego szukają.

Czy nie byłoby czyściej wyświetlać tylko kategorię podrzędną dla każdego wpisu?

Ten przewodnik pokaże ci, jak zmodyfikować plik motywu WordPress, aby wyświetlać tylko kategorie podrzędne w pętli wpisów, nadając twojemu blogowi bardziej usprawniony i przyjazny dla użytkownika charakter.

Showing only child categories inside WordPress post loop

Dlaczego warto wyświetlać tylko kategorie podrzędne w twojej pętli wpisów WordPress?

Tworząc bloga WordPress, możesz organizować treść za pomocą kategorii i tagów.

Aby pomóc czytelnikom szybciej znaleźć interesujące treści, można nawet utworzyć kategorie podrzędne (lub podkategorie).

Na przykład, jeśli prowadzisz bloga o podróżach, możesz utworzyć kategorię „Miejsca docelowe”, a następnie kategorie podrzędne, takie jak „Europa”, „Ameryka” i „Australia”.

Domyślnie większość motywów WordPress pokazuje wszystkie kategorie nadrzędne i podrzędne dla wpisu.

Displaying the child categories only in the WordPress post loop

Jeśli jednak używasz wielu kategorii, to strony twojego bloga mogą zacząć wyglądać na nieuporządkowane i skomplikowane. Może to również utrudnić czytelnikom znalezienie interesującej ich kategorii.

Z tego powodu możesz chcieć ukryć ogólne kategorie nadrzędne wpisu i wyświetlić tylko kategorie podrzędne. W związku z tym zobaczmy, jak można wyświetlić tylko kategorie podrzędne w pętli wpisów WordPress.

Przed edycją pliku motywu WordPress: kluczowe punkty do zapamiętania

Ten przewodnik jest skierowany do osób, które dobrze radzą sobie z kodowaniem i edycją plików motywów WordPress. Oto kilka rzeczy, które powinieneś zrobić przed przystąpieniem do poradnika:

  1. Po pierwsze, musisz połączyć swoją witrynę internetową z FTP lub otworzyć menedżera plików swojego hosta, aby uzyskać dostęp do tych plików.
  2. Jeśli jesteś początkujący, możesz zapoznać się z naszym przewodnikiem dla początkujących, jak wklejać fragmenty kodu z sieci do WordPressa, aby przygotować się wcześniej.
  3. Zalecamy utworzenie kopii zapasowej lub skorzystanie z witryny tymczasowej w celu zastosowania tej metody. W ten sposób, jeśli coś pójdzie nie tak, twoja witryna na żywo nie będzie miała na to wpływu.

Wreszcie, ten przewodnik ma zastosowanie tylko do klasycznych motywów WordPress. Motywy blokowe mają inną strukturę plików motywu.

Wyświetlanie tylko kategorii podrzędnej w pętli wpisów WordPressa

W tym poradniku pokażemy, jak edytować twój plik motywu za pomocą menedżera plików Bluehost. Ale niezależnie od twojego dostawcy hostingu, kroki powinny być podobne.

Najpierw zaloguj się do swojego kokpitu Bluehost i przejdź do karty „Witryny internetowe”. Następnie kliknij „Ustawienia” na witrynie, którą chcesz edytować.

Bluehost site settings

Następnie przewiń w dół do sekcji Szybkie odnośniki.

Następnie kliknij przycisk „Menedżer plików”.

Accessing a website's file manager in Bluehost

Spowoduje to otwarcie menedżera plików.

Teraz musisz znaleźć kod w pliku twojego motywu, który jest odpowiedzialny za wyświetlanie kategorii. Możesz zacząć to robić, przechodząc do katalogu public_html witryny wp-content ” themes katalogu twojego obecnego, aktualnego motywu.

Na tym etapie może być konieczne otwarcie każdego pliku i katalogu po kolei, aby znaleźć właściwy plik do edycji. Jedną rzeczą, którą możesz zrobić, jest próba znalezienia kodu związanego z kategorią, takiego jak has_category lub get_the_category_list. Jeśli je znajdziesz, powinieneś być we właściwym pliku.

Jeśli nie możesz znaleźć odpowiedniego pliku szablonu, zapoznaj się z naszą ściągawką z hierarchii szablonów WordPress i naszym przewodnikiem , jak znaleźć odpowiedni plik motywu do edycji.

Jeśli korzystasz z motywu Twenty Twenty-One, plikiem, którego powinieneś szukać, jest plik tagów szablonu w katalogu „inc”. Po jego znalezieniu możesz kliknąć plik prawym przyciskiem myszy i wybrać opcję „Edytuj”.

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

W pliku jest to fragment kodu odpowiedzialny za wyświetlanie kategorii i tagów:

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 {

Teraz, gdy znalazłeś odpowiedni kod, możesz zastąpić cały ten fragment kodu tym:

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 {

Ten fragment kodu najpierw identyfikuje wszystkie kategorie przypisane do wpisu. Następnie sprawdza, czy każda kategoria ma nadrzędny element.

Jeśli tak, oznacza to, że jest to kategoria podrzędna i zostanie dodana do wyświetlanej listy. Kategorie nadrzędne są pomijane, co skutkuje czystszym, bardziej szczegółowym wyświetlaniem kategoryzacji twojego wpisu.

Oto jak powinno to wyglądać po zastąpieniu kodu:

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

Po zakończeniu zapisz swoje zmiany.

Teraz należy przejść na wpis, który ma jedną lub więcej kategorii podrzędnych. Zobaczysz, że kategoria nadrzędna jest ukryta, a WordPress pokazuje teraz tylko kategorie podrzędne.

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

Mamy nadzieję, że ten artykuł pomógł ci dowiedzieć się, jak wyświetlić tylko kategorię podrzędną w twoich wpisach WordPress. Następnie warto zapoznać się z naszym artykułem na temat tego , jak inaczej stylizować poszczególne kategorie w WordPressie oraz naszym przewodnikiem dla początkujących na temat wyszukiwania według kategorii w WordPressie.

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.

Ujawnienie: Nasze treści są wspierane przez czytelników. Oznacza to, że jeśli klikniesz na niektóre z naszych linków, możemy otrzymać prowizję. Zobacz jak WPBeginner jest finansowany, dlaczego to ma znaczenie i jak możesz nas wspierać. Oto nasz proces redakcyjny.

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.

Najlepszy zestaw narzędzi WordPress

Uzyskaj BEZPŁATNY dostęp do naszego zestawu narzędzi - zbiór produktów i zasobów związanych z WordPressem, które każdy profesjonalista powinien mieć!

Reader Interactions

10 komentarzyZostaw odpowiedź

  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.

      Administrator

      • 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.

Zostaw odpowiedź

Dziękujemy za pozostawienie komentarza. Pamiętaj, że wszystkie komentarze są moderowane zgodnie z naszymi polityka komentarzy, a Twój adres e-mail NIE zostanie opublikowany. NIE używaj słów kluczowych w polu nazwy. Przeprowadźmy osobistą i konstruktywną rozmowę.