I’m trying to show the only the last child terms of a taxonomy in a post.
For example, the post “Johnny Pastafrolla” has the following terms of the taxonomy “camp” selected:
- Summer Camp
- Summer Camp 2018
- Summer Camp 2019
- Space Camp
- Winter Camp
- Winter Camp 2017
In this case, the displayed terms are gonna be:
Summer Camp 2018, Summer Camp 2019, Space Camp, Winter Camp 2017
I found a code online which is doing this, but for Categories.
add_filter( 'the_category_list', 'ci_theme_the_category_list_remove_parent_categories', 10 );
function ci_theme_the_category_list_remove_parent_categories( $categories ) {
$categories_tmp = $categories;
foreach ( $categories_tmp as $child_cat ) {
foreach ( $categories_tmp as $key => $parent_cat ) {
if ( isset( $categories[ $key ] ) ) {
if ( cat_is_ancestor_of( $parent_cat, $child_cat ) ) {
unset( $categories[ $key ] );
}
}
}
}
return $categories;
}
I’m trying to “adapt it” for this specific taxonomy, but I’m kind of lost.
Any hint?
Thank you
Dave
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
I wanted to display the terms with the get_the_term_list function so, since categories & taxonomy have a “similar logic”, I replaced the “the_category_list”
add_filter( 'the_category_list', 'ci_theme_the_category_list_remove_parent_categories', 10 );
with
“get_the_terms”
add_filter( 'get_the_terms', 'only_last_taxonomy_terms', 10 );
and it does what I need.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0