[wp-trac] [WordPress Trac] #21760: Allow get_term() to accept string as first argument

WordPress Trac wp-trac at lists.automattic.com
Fri Aug 31 21:26:23 UTC 2012


#21760: Allow get_term() to accept string as first argument
----------------------------+-----------------------------
 Reporter:  wonderboymusic  |      Owner:
     Type:  enhancement     |     Status:  new
 Priority:  normal          |  Milestone:  Awaiting Review
Component:  Taxonomy        |    Version:  2.3
 Severity:  normal          |   Keywords:  has-patch
----------------------------+-----------------------------
 {{{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}}}[[BR]]
 2) Allows key in the {{{$taxonomy}}} cache bucket to be {{{name}}},
 {{{slug}}}, or {{{term_id}}}[[BR]]
 3) Deprecates {{{get_term_by()}}}[[BR]]
 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}}}.

-- 
Ticket URL: <http://core.trac.wordpress.org/ticket/21760>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list