Support » Plugins » get category ID from Slug

  • I want to automate a certain functionality based on the categories that I add.

    If I have the category slug, how can I get it’s category ID?

    Thanks guys.

Viewing 15 replies - 1 through 15 (of 20 total)
  • Michael Torbert


    WordPress Virtuoso

    I didn’t bother to look up the exact terms, but it would be something like this:

    $query=”SELECT cat_id FROM $wpdb->categories WHERE category_nicename = $your_slug”;

    I was hoping to use an internal function to maybe take advantage of a previously run query if possible… but failing that, this’ll work out great.

    Thank you.

    Still looking for an already populated variable, or some other way to avoid a query, but … in the mean time:

    $id = $wpdb->get_var("SELECT term_id FROM $wpdb->terms WHERE slug='$myslug'");

    does the trick.

    I figure I may as well do this unless someone has a better idea?

    You can also loop through the categories like this:

    foreach(get_categories() as $category){
        if($category->slug == $THE_SLUG){
            $THE_ID = $category->cat_ID;

    cheers for that wp_guy.

    EDIT: I just realised you were talking about get_categories (not get_the_category) which can be used outside the loop, in which case your post may actually prove very useful, although I’m sure get_categories uses a query too. Excuse my mistake.

    I wasn’t very specific in my opening post though, but let me fill you in.

    I’m not doing this in the loop – I’m going to assemble a page based on a user profile field, so… if you enter YourCompany in the profile field, and your user level is sufficient, you’ll be able to view a page which pulls posts from various categories with slugs such as ‘yourcompany’, ‘yourcompany-tickets’, ‘yourcompany-news’ etc.

    so I will have ‘YourCompany’ as the user profile field, but now I need to pull the category IDs for each of those categories I mentioned earlier — outside the loop of course… to be stuffed into various areas like the main content and the sidebar as well.

    Basically I’m trying to be a tricky bastard, to avoid having to modify templates each time there’s a new company available. I’ll just make the categories, and the page will work.

    thanks for adding your 2cents though – these threads are useful forever.

    yep, as I suspected, this isn’t something that uses variables already pulled by other queries, so get_categories adds a query, but then so does wp_list_categories in the sidebar.

    I may be just picky enough to do this once, then build my own category list from a global var in the sidebar… we’ll see.

    thanks for the suggestion though – it’s another viable option.

    As it turns out… I’m now pulling two category IDs each time, so it makes more sense to use get_categories() and loop through them, as I’d have to loop through either way.

    thanks wp_guy!

    No problem… I just tend to avoid raw database queries in case the database structure changed in future WP releases.

    yep – with my luck though, half the undocumented functions I’m using to play with the user metadata will change in the next version. *sigh*

    good luck with that 😉

    WordPress has a get_cat_id() function. See this page for an example:

    Moderator Samuel Wood (Otto)

    (@otto42) Admin

    If I have the category slug, how can I get it’s category ID?

    Wow. I can’t believe nobody got this one right.

    $category = get_category_by_slug('slug');
    echo $category->term_id;


    Yeah and you probably just grabbed that answer from one of the files in wp-include too. Like, um…. category.php ?


    Moderator Samuel Wood (Otto)

    (@otto42) Admin

    Well.. of course. Where else would I get it from?

    I refer to the WordPress source to answer most of the questions here. 🙂

    It would be the best reference, it’s hard for the code to contradict the docs (unless it’s a bug). And that particular file is quite well commented. Plus, not every function or CSS class is documented in the Codex.

Viewing 15 replies - 1 through 15 (of 20 total)
  • The topic ‘get category ID from Slug’ is closed to new replies.