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?

Uwaga redakcyjna: Otrzymujemy prowizję z linków partnerskich na WPBeginner. Prowizje nie mają wpływu na opinie i oceny naszych redaktorów. Dowiedz się więcej o Proces redakcyjny.

Czy chcesz wyświetlać tylko kategorię podrzędną w twojej pętli wpisów WordPress?

Większość motywów WordPress pokazuje wszystkie kategorie dla wpisu, w tym kategorie nadrzędne i podrzędne. Jeśli jednak dodasz wiele kategorii do twoich wpisów, może to sprawić, że twoja witryna będzie wyglądać niechlujnie i uniemożliwi czytelnikom znalezienie interesujących treści.

W tym artykule pokażemy, jak łatwo wyświetlić tylko kategorię podrzędną w twojej pętli wpisów WordPress.

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

Najpierw musisz znaleźć w plikach twojego motywu kod odpowiedzialny za wyświetlanie kategorii. Może to zająć trochę czasu, ale możesz użyć funkcji wyszukiwania twojego edytora kodu, aby przyspieszyć pracę.

Spróbuj znaleźć kod związany z kategoriami, taki jak has_category lub get_the_category_list. Jeśli je znajdziesz, powinieneś być we właściwym pliku.

Jeśli korzystasz z motywu Twenty Twenty-One, plikiem, którego powinieneś szukać, jest plik template-tags znajdujący się w katalogu „inc”. Tutaj znajduje się fragment kodu odpowiedzialny za wyświetlanie kategorii:

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
        );
    }
    echo '</div>';
}

Jeśli nie możesz znaleźć odpowiedniego pliku szablonu, zapoznaj się z naszą ściągawką dotyczącą hierarchii szablonów WordPress.

Teraz, gdy znalazłeś odpowiedni kod, możesz dodać następujący fragment kodu:

// Get the IDs of categories
    $categories = get_the_category();
    $child_cat_ID = array(); // Array to store child category IDs

    foreach( $categories as $category ) {
        // Check if the category has a parent (i.e., it's a child category)
        if ( $category->parent > 0 ) {
            $child_cat_ID[] = $category->term_id; // Store the child category ID
        }
    }

    if ( !empty($child_cat_ID) ) {
        $output = '<span class="cat-links">' . esc_html__( 'Categorized as ', 'twentytwentyone' );
        foreach($child_cat_ID 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; // Echo the entire output

Jeśli korzystasz z motywu Twenty Twenty-One, powinieneś dodać powyższy kod, zastępując te między tymi liniami:

if ( has_category() || has_tag() ) {
    echo '<div class="post-taxonomies">';
// Replace the code in between these lines
}
    echo '</div>';
}

Oto jak powinno to wyglądać:

Editing a theme file to display only child categories

Po zakończeniu zapisz zmiany, a następnie prześlij plik z powrotem na serwer WWW.

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.

Mamy nadzieję, że ten artykuł pomógł ci dowiedzieć się, jak wyświetlać tylko kategorię podrzędną w twoich wpisach WordPress. Następnie możesz zapoznać się z naszym przewodnikiem na temat zarabiania pieniędzy na blogu online za pomocą WordPress a lub naszymi typami ekspertów dotyczącymi najlepszych wtyczek i narzędzi SEO, których powinieneś używać.

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

11 komentarzyZostaw odpowiedź

  1. Syed Balkhi says

    Hey WPBeginner readers,
    Did you know you can win exciting prizes by commenting on WPBeginner?
    Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
    You can get more details about the contest from here.
    Start sharing your thoughts below to stand a chance to win!

  2. Mike says

    Managed it!

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

  3. MIke says

    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?

  4. Marian Rick says

    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!

    • Editorial Staff says

      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

  5. Keith Davis says

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