Allow get_term() to accept string as first argument — at Initial Version
|Reported by:||wonderboymusic||Owned by:|
|Cc:||aaroncampbell, ben@…, erick@…, frederic.demarle@…|
get_term() is the simplest way to retrieve one term, but it requires term_id and taxonomy. Because of this, terms are cached with term_id as key and $taxonomy as bucket. As a result, you can't easily grab a term by slug, unless you use get_term_by( 'slug' ). get_term_by( 'slug' ) and get_term_by( 'name' ) don't even have a query cache, so they go to the database every time. Because you can't get a term by slug without hitting the db, every place you want to get a term by slug: you first have to transform it into a term_id where it will then be cached. This is inefficient because the user may query by slug constantly and never by term_id.
My patch does the following:
1) Changes the type of argument 1 of get_term to be mixed - int, string, or object
2) Allows key in the $taxonomy cache bucket to be name, slug, or term_id
3) Deprecates get_term_by()
4) updates clean_term_cache() to also evict by name and slug
The result is that get_term() can be called with term_id, slug, or name - and then CACHED by term_id, slug, or name.