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.
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.
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:
- 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.
- 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.
- 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ć.
Następnie przewiń w dół do sekcji Szybkie odnośniki.
Następnie kliknij przycisk „Menedżer plików”.
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”.
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:
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.
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.
Syed Balkhi
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!
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);
}
}
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?
amnachohan
Will it work outside the loop ?
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!
GoranJakovljevic
is it possible to do this for 2 categories instead of single one?
gashface
How Would I include &orderby=ID ?
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”?
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.