I'm using a function (copied and modified a bit from this question ) which displays taxonomies in order by rank with » between parent and child and | between terms, but I get a mistake in the html output and I don't understand what's wrong.

Here's what I put in my functions php (the function I copied from WP questions):

function print_taxonomy_ranks( $terms ) {
    // if terms is not array or its empty don't proceed
    if ( ! is_array( $terms ) || empty( $terms ) ) {
        return false;

    foreach ( $terms as $term ) {
        // if the term have a parent, set the child term as attribute in parent term
        if ( $term->parent != 0 )  {
            $terms[$term->parent]->child = $term;   
        } else {
            // record the parent term
            $parent = $term;

    echo "<a href='http://blogadress/$parent->taxonomy/$parent->slug'>$parent->name</a> » <a href='http://blogadress/{$parent->child->taxonomy}/{$parent->child->slug}'>{$parent->child->name}</a> | ";


(Note: I'm using absolute path http://blogadress because I'm running it locally and I'm not managing to make it work otherwise)

And here's what I put in my template file

<p><?php print_taxonomy_ranks( get_the_terms( $post->ID, 'soggetto' ) ); ?></p>

Here's the WRONG html output I get:

error1: the first two terms don't appear (just a link to the blog home with a double slash at the end, linked to nothing);

error 2 (unwanted behavior): the terms parents appear two times: once as solitary terms, and once as parents of the children.

<p><a href='http://blogadress//'></a> » <a href='http://blogadress//'></a> | 
<a href='http://blogadress/soggetto/parent1'>parent1</a> » <a href='http://blogadress/soggetto/child1'>child1</a> | 
<a href='http://blogadress/soggetto/parent2'>parent2</a> » <a href='http://blogadress//'></a> | 
<a href='http://blogadress/soggetto/parent2'>parent2</a> » <a href='http://blogadress/soggetto/child2'>child2</a> |</p>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.