37

If I know a taxonomy term slug, how can I get that term's name?

1
  • are you wanting to create a link, title, ??? May 5, 2011 at 5:10

3 Answers 3

60

The function you are looking for is get_term_by. You would use it as such:

<?php $term = get_term_by('slug', 'my-term-slug', 'category'); $name = $term->name; ?>

This results in $term being an object containing the following:

term_id
name
slug
term_group
term_taxonomy_id
taxonomy
description
parent
count

The codex does a great job explaining this function: https://developer.wordpress.org/reference/functions/get_term_by/

4
  • you beat me to it. This is exactly what i would do to. May 5, 2011 at 5:16
  • 1
    What if you don't have the taxonomy slug?
    – EkoJR
    May 7, 2017 at 1:42
  • You can use get_term( $term_id ); if you only have the ID.
    – Gavin
    Jul 11, 2020 at 9:32
  • 1
    Ne aware this is not how you get taxonomy name, this is how you get term name.
    – jave.web
    May 2, 2021 at 18:00
3

This provides an answer when the taxonomy is unavailable/unknown.

In my case, when using get_term_by, there were some instances where there was only the Term Slug ( No Term ID or Taxonomy ). Which led me here. However, the answer provided didn't quite resolve my issue.

Solution for empty $taxonomy

// We want to find the ID to this slug.
$term_slug = 'foo-bar';
$taxonomies = get_taxonomies();
foreach ( $taxonomies as $tax_type_key => $taxonomy ) {
    // If term object is returned, break out of loop. (Returns false if there's no object)
    if ( $term_object = get_term_by( 'slug', $term_slug , $taxonomy ) ) {
        break;
    }
}
$term_id = $term_object->name;

echo 'The Term ID is: ' . $term_id . '<br>';
var_dump( $term_object );

Result

The Term ID is: 32
object(WP_Term)
  public 'term_id' => int 32
  public 'name' => string 'Example Term'
  public 'slug' => string 'example-term'
  public 'term_group' => int 0
  public 'term_taxonomy_id' => int 123
  public 'taxonomy' => string 'category'
  public 'description' => string ''
  public 'parent' => int 0
  public 'count' => int 23
  public 'filter' => string 'raw'

As follows, the concept gets an array of $taxonomies, loops through the array, and IF get_term_by() returns a match, it then immediately breaks out of the foreach loop.

Note: I tried searching for a method to get the associated taxonomy ( ID or Slug ) from Term Slug, but unfortunately I am unable to find anything available in WordPress.

0

thanks, this worked for me.

I created a function and use it again and again as needed.

function helper_get_taxonomy__by_slug($term_slug){
    $term_object = "";
    $taxonomies = get_taxonomies();
    foreach ($taxonomies as $tax_type_key => $taxonomy) {
        // If term object is returned, break out of loop. (Returns false if there's no object);
        if ($term_object = get_term_by('slug', $term_slug, $taxonomy)) {
            break;
        }else{
            $term_object = "Warn! Helper taxonomy not found.";
        }
    }
    return $term_object;
}
1
  • You should return the same types as get_term_by: (WP_Term|array|false) WP_Term instance (or array) on success. Will return false if $taxonomy does not exist or $term was not found.
    – xnagyg
    May 25, 2020 at 17:58

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.