Opened 9 months ago
Last modified 2 weeks ago
#21760 new enhancement
Allow get_term() to accept string as first argument — at Initial Version
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | Future Release |
| Component: | Taxonomy | Version: | 2.3 |
| Severity: | normal | Keywords: | has-patch needs-unit-tests |
| Cc: | aaroncampbell, ben@…, erick@… |
Description
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.
