I have created Custom Post type called "places"

For that I created Custom Taxonomy Category called "Music".

Here is the code:

add_action( 'init', 'register_taxonomy_music' );

function register_taxonomy_music() {

$labels = array( 
    'name' => _x( 'Music', 'music' ),
    'singular_name' => _x( 'Music', 'music' ),
    'search_items' => _x( 'Search Music', 'music' ),
    'popular_items' => _x( 'Popular Music', 'music' ),
    'all_items' => _x( 'All Music', 'music' ),
    'parent_item' => _x( 'Parent Music', 'music' ),
    'parent_item_colon' => _x( 'Parent Music:', 'music' ),
    'edit_item' => _x( 'Edit Music', 'music' ),
    'update_item' => _x( 'Update Music', 'music' ),
    'add_new_item' => _x( 'Add New Music', 'music' ),
    'new_item_name' => _x( 'New Music', 'music' ),
    'separate_items_with_commas' => _x( 'Separate music with commas', 'music' ),
    'add_or_remove_items' => _x( 'Add or remove music', 'music' ),
    'choose_from_most_used' => _x( 'Choose from the most used music', 'music' ),
    'menu_name' => _x( 'Music', 'music' ),

$args = array( 
    'labels' => $labels,
    'public' => true,
    'show_in_nav_menus' => true,
    'show_ui' => true,
    'show_tagcloud' => true,
    'show_admin_column' => false,
    'hierarchical' => true,

    'rewrite' => true,
    'query_var' => true

register_taxonomy( 'music', array('places'), $args );

Now, I want to display the categories in single-places.php.

How can I display the categories "Music".

2 Answers 2


you can get terms in single post type template by using wp_get_post_terms(); inside loop

<?php $terms = wp_get_post_terms($post->ID, 'music');
if ($terms) {
    $out = array();
    foreach ($terms as $term) {
        $out[] = '<a class="' .$term->slug .'" href="' .get_term_link( $term->slug, 'music') .'">' .$term->name .'</a>';
    echo join( ', ', $out );
} ?>
  • After the query, i get Music: Rock, Jazz, House, .... I want to add icons in front of the Rock, Jazz etc, can you create classes for each value like rock, jazz so that i can add icons in front of the categories
    – luckyrajiv
    Sep 6, 2013 at 18:27
  • can you please create classes for each categories and give so that i can add icons
    – luckyrajiv
    Sep 6, 2013 at 18:30
  • ok edited my answer and added term slug as css class now you can style each term as you wish.
    – Anjum
    Sep 6, 2013 at 18:32
  • can you add a comma next to each term slug, currently all the terms are next to each other without gap.
    – luckyrajiv
    Sep 6, 2013 at 19:31
  • ok edited now it will output terms separate by commas if more then 1
    – Anjum
    Sep 6, 2013 at 19:37

Although the answer of @Anjum works perfectly, it can be done also using get_the_terms(), a function that get the terms using wp_get_post_terms() or get_object_term_cache(), depend of the situation. So using get_the_terms() can be more appropiate if you don't need to pass extra arguments, as it is the case.

$terms = get_the_terms($post->ID, 'music');
if ($terms) {
     foreach ($terms as $term) {
     $out[] = '<a class="' .$term->slug .'" href="' .get_term_link( $term->slug, 'music') .'">' .$term->name .'</a>';
    echo join( ', ', $out );


  1. get_the_terms()
  2. wp_get_post_terms()
  • its repeating each category into next categories
    – luckyrajiv
    Sep 7, 2013 at 16:19
  • its like this (1) Place: Chicago (2) Music: Chicago, Rock, Jazz (3) Food: Chicago, Rock, Jazz , Chinese, Thai, Italian It is first showing previous fields then that category everytime
    – luckyrajiv
    Sep 7, 2013 at 16:21
  • In your question you say "I created Custom Taxonomy Category called "Music"......How can I display the categories "Music"?" and that is what this code does, and it does using a better function that the accepted answer (I think, read the reasons in my answer). If your question has changed, please edit it or start new one.
    – cybmeta
    Sep 8, 2013 at 8:16
  • Can you post the code that your are currently using?
    – cybmeta
    Sep 8, 2013 at 8:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.