Im trying to display a custom taxonomy for a custom post type. So this taxonomy is specific to this custom post type. Unfortunately I cant get them to display. Here is my code in functions.php to register the custom taxonomy:

add_action('init', 'products_categories', 0);

function products_categories(){
$labels = array ('name' => _x('Product Categories','taxonomy general name'),
                'singular_name' =>_x('Product Category','taxonomy singular name'),
                'serch_items' => __('Search Product Categories'),
                'popular_items' => ('Popular Product Categories'),
                'all_items' => __('All Product Categories'),
                'parent_item' => null,
                'parent_item_colon' => null,
                'edit_item' => __('Edit Product Category'),
                'update_item' => __('Update Product Category'),
                'add_new_item' => __('Add Product Category'),
                'new_item_name' => __('New Product Category'),
                'separate_items_with_commas' => __('Seperate Product Categories with commas'),
                'add_or_remove_items' => __('Add or remove Product Categories'),
                'choose_from_most_used' => __('Most Used Product Categories'),
                'menu_name' => __('Product Categories'),

register_taxonomy('product_categories', 'products', array(
'hierarchical' => false,
    'labels' => $labels,
    'show_ui' => true,
    'show_admin_column' => true,
    'update_count_callback' => '_update_post_term_count',
    'query_var' => true,
    'rewrite' => array( 'slug' => 'product_category' ),

And here im trying to display them:

<?php } 
    $terms = get_terms('taxonomy'=>'product_category', 'hide_empty'=> false,);
        foreach ( $terms as $term) {
<a href=""><?php echo $term->name; ?></a>

Do I need to have this running in a query of some sort first?

  • there you have registered taxonomy 'product_categories' but you trying get_terms with a different name as 'product_category'.
    – Aishan
    Nov 21, 2018 at 10:22

2 Answers 2


it looks like your get_terms() call is incorrect, the argument is not an array and you have a typo in taxonomy name ('product_category' instead of 'product_categories') it should be

$terms = get_terms( array( 
    'hide_empty'=> false 
) ); 

If this will not help it would be best if you could let us know if you are seeing any error message and if you do paste the error here.

  • Yeah there are several different ways ive tried this and they dont seem to work. Ive set wp_debug to false and errors usually appear on the top of my admin page. But there is no error messages
    – Zayd Bhyat
    Nov 21, 2018 at 10:46
  • One other thing you can try is to add var_dump($terms); after $terms = get_terms( ... ); maybe there is no error and get_terms() just returns an empty array? Nov 21, 2018 at 10:54
  • Yeah thats very possible but I have added 2 product categories to it. Maybe its not pulling the custom taxonomy product categories properly
    – Zayd Bhyat
    Nov 21, 2018 at 10:56
  • var_dump($terms) doesnt seem to do anything
    – Zayd Bhyat
    Nov 21, 2018 at 11:09
  • This worked... I added the wrong template part to the page
    – Zayd Bhyat
    Nov 21, 2018 at 11:16

I managed to solve this and I will post the answer:

  $args = array('number' => '1',);
  $terms = get_terms('recipes', $args );
    foreach( $terms as $term ){
    echo '<div class="title">' . $term->name . 'recipe</div>';
  • Ive tried this way, doesnt seem to work
    – Zayd Bhyat
    Nov 21, 2018 at 10:47

Your Answer

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

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