Grow your CSS skills. Land your dream job.

Display custom taxonomy (like “the_category”) for custom post type

  • # November 29, 2011 at 6:09 am

    Hi there

    I have a custom post type, “entrepreneurs”, with a custom taxonomy, “sectors” attached to it. Here is the code (http://codepad.org/ceQH4a6a) for my custom post type registrations.

    Things you might need to know:

    • “Entrepreneurs” are heirachical, like pages.
    • “Sectors” are like the categories for the post type

    What I want to do…

    In both my archive and single views, I would like to display the assigned sector name for the post below the title – in the same way that you would in, say, a blog article, using “the_category” or something similar. Like so:

    <?php the_category('', '', $post_id) ?>

    The full block of code can be found here (http://codepad.org/ub3c9N9P).

    I want the H4 to output the custom taxonomy, without a link – resulting in the following layout (http://db.tt/xiL3w0ty). The grey text below the title is sector taxonomy.

    I’ve tried a number of solutions found on various forums and resources, but none are working for me. Any help would be appreciated.

    Thanks in advance.

    Rob
    # November 29, 2011 at 7:38 am

    you are in the right area – but just think of the_category as the default function for the taxonomy “Categories”

    What you need to do is use the terms functions, where you specify the taxonomy you want to use

    http://codex.wordpress.org/Function_Reference/get_terms
    http://codex.wordpress.org/Function_Reference/wp_get_post_terms

    Check the bottom of the pages for more functions too.

    # November 29, 2011 at 9:26 am

    Thanks for the nudge in the right direction, Rob.

    I used the following:

    <h4><?php $terms = get_terms("sectors"); $count = count($terms); if ( $count > 0 ){ foreach ( $terms as $term ) { echo $term->name; } } ?> Sector</h4>

    It seems to work.

    As this is a “client” website, and they usually screw everything up when editing, I’d prefer to be able to limit the number of terms outputted to 1. Any help..?

    # November 29, 2011 at 10:27 am

    I use the following to display a term without a link. Not sure how to limit but should be easy enough.

    AFAIK, this is the correct code to use. Yours looks kinda bloated.

    < ?php
    $terms = get_the_terms( $post->ID , 'taxonomyname' );
    foreach ( $terms as $term ) {
    echo $term->name;
    }
    ?>
    # November 29, 2011 at 10:30 am

    Hey Mike,

    Thanks for sharing that. Always good to trim the fat… It worked.

    Cheers.

    Rob
    # November 30, 2011 at 10:38 am

    Awesome :-)

    # May 25, 2013 at 10:41 pm

    Is it possible to modify this so that the term that is output is wrapped in a link that would show the archive of that taxonomy term? (the way a category often is shown)

    # June 4, 2013 at 1:53 pm

    http://codex.wordpress.org/Function_Reference/get_term_link

    The “Examples” section should be what you’re looking for.

    # September 10, 2013 at 1:16 am

    Hi guys.

    Am a beginner to wordpress and I i have been playing around with custom post types and taxonomies. I have product custom post type and three taxonomies assigned to that post type. Here is my functions file for http://codepad.org/opDNhZPf . so the product should have a category, brand and the type. Then I would like to have a query which will return a products with their respective taxonomies. I would really appreciate if i can get help.

    # November 22, 2013 at 4:24 am

    I have played about with the code some more as I needed to display only one custom taxonomy that was a link.
    However I am unable to get the link to work – anyone have any ideas on this?

    See here:

    <?php $terms = get_the_terms( $post->ID , 'yourcustomtaxonomyhere' ); 
                        foreach ( $terms as $term ) {
                        echo '<a href="' . $term_link . '">' . $term->name . '</a>';
                        } 
                    ?>
    
    # November 22, 2013 at 4:34 am

    CRACKED IT!

    I have managed to get the code working, see following:

    <?php $terms = get_the_terms( $post->ID , 'yourtaxonomyhere' ); 
                        foreach ( $terms as $term ) {
                            $term_link = get_term_link( $term, 'yourtaxonomyhere' );
                            if( is_wp_error( $term_link ) )
                            continue;
                        echo '<a href="' . $term_link . '">' . $term->name . '</a>';
                        } 
                    ?>
    
    # January 10, 2014 at 8:11 am

    Thanks @Brightonmike. Your code snippet is exactly what I was looking for. Cheers!

Viewing 12 posts - 1 through 12 (of 12 total)

You must be logged in to reply to this topic.

*May or may not contain any actual "CSS" or "Tricks".