*SIDENOTE: This function can be used even if have posts belongs to one taxonomy only. You don't need to have a post that belongs to two or more taxonomies within the same hierarchy. I have made this function very flexible* It is always a problem for me to display a category list or term list for a post if the following conditions occur - Having a post having terms that belongs to two different taxonomies - Using one template to display posts, and you have posts that have terms belonging to more that one taxonomy You come to a situation where you need to duplicate functions, one for each taxonomy. For instance, a post belongs to terms in two taxonomies, `mytax1` and `mytax2`. To display the term list, you have to do echo get_the_term_list( $post->ID, 'mytax1' ); echo get_the_term_list( $post->ID, 'mytax2' ); This become a mess when the next post belongs to the default taxonomy `category` I went and wrote a function that combines all in one, one function to display all terms of all taxonomies belonging to a post, and this function can be used to display any taxonomy of the build in taxonomies (except `post_format`) Here is how the function works: ------------------------------- 1.) This function makes use of [`get_the_term_list()`][1] to display the term list, so this function uses the same functionality as `get_the_term_list()` 2.) Must be used inside the loop. This function will not work outside the loop 3.) The post ID and taxonomy name are passed by default to the `get_the_term_list()` function 4.) Here is the list of the arguments >**before** (string)(optional) Leading text >Default: empty string >**sep** (string)(optional) String to separate tags >Default: empty string >**after** (string)(optional) Trailing text >Default: empty string >**display_tax_name** (bool)(optional) Should the taxonomy name be displayed in front of the list. >Default: false >**taxonomy_sep** (string)(optional) Text used to separate the taxonomy name from the term list >Default: `': '` >**multi_tax_sep** (string)(optional) If the post have terms that belongs to more than one taxonomy, the text used to separate the two or more term lists >Default: `</br>` >**hierarchical** (bool)(optional) Should the list display hierarchical taxonomies (like categories ) or non-hierarchical taxonomies (like post tags) >Default: true 5.) The arguments can be passed as an array or as a string to the function 6.) Needs PHP 5.4+ This will work (string) 'display_tax_name=' . true .'&hierarchical=' . false . '&taxonomy_sep=' . html_entity_decode( '» ' ) And this will work $args = [ 'display_tax_name' => true, 'hierarchical' => false, 'taxonomy_sep' => html_entity_decode( '» ' ) ] The function ------------ function get_taxonomies_terms_links( $args = '' ){ global $post; $defaults = [ 'before' => '', 'sep' => '', 'after' => '', 'display_tax_name' => false, 'taxonomy_sep' => ': ', 'multi_tax_sep' => '</br>', 'hierarchical' => true ]; $args = wp_parse_args( $args, $defaults ); $post_type = $post->post_type; $taxonomies = get_object_taxonomies( $post_type, 'objects' ); $returned_list = []; foreach ( $taxonomies as $taxonomy_slug => $taxonomy ){ if( $args['hierarchical'] == $taxonomy->hierarchical && has_term( '', $taxonomy_slug ) && 'post_format' != $taxonomy_slug ) { $term_list = get_the_term_list( $post->ID, $taxonomy_slug, $args['before'], $args['sep'], $args['after'] ); if( true == $args['display_tax_name'] ){ $returned_list[] = strtoupper($taxonomy_slug) . $args['taxonomy_sep'] . $term_list; }else{ $returned_list[] = $term_list; } } } if( $returned_list ) { $count = count($returned_list); if( 1 === $count ) { return implode( '', $returned_list ); }else{ $multi_list = []; foreach ( $returned_list as $key=>$value ) { if (array_key_exists($key + 1, $returned_list)) { $multi_list[] = $value . $args['multi_tax_sep']; }else{ $multi_list[] = $value; } } return implode( '', $multi_list ); } } } Example of use in a template to display the term list. You can either make use of the normal reading characters or HTML entities in conjunction with [`html_entity_decode()`][2] and the [character chart][3] Arguments as string <span class="cat-links"> <?php echo get_taxonomies_terms_links('sep=, &display_tax_name=' . true .'&taxonomy_sep=' . html_entity_decode( '» ' ) ); ?> </span> Arguments as an array <span class="cat-links"> <?php echo get_taxonomies_terms_links( [ 'sep' => ', ', 'display_tax_name' => true, 'taxonomy_sep' => html_entity_decode( '» ' ) ], ); ?> </span> [1]: http://codex.wordpress.org/Function_Reference/get_the_term_list [2]: http://php.net/manual/en/function.html-entity-decode.php [3]: http://dev.w3.org/html5/html-author/charref