How to display Custom Taxonomy of Custom post type

I have created Custom Post type called “places”

For that I created Custom Taxonomy Category called “Music”.

Read More

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”.

Related posts

2 comments

  1. 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 );
    } ?>
    
  2. 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.

    <?php
    $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 );
    }
    ?>
    

    References:

    1. get_the_terms()
    2. wp_get_post_terms()

Comments are closed.