Changes between Initial Version and Version 11 of Ticket #21760
- Timestamp:
- 09/04/2012 04:28:22 PM (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #21760
- Property Keywords needs-unit-tests added
-
Property
Summary
changed from
Allow get_term() to accept string as first argument
toget_term_by() calls are not cached
-
Ticket #21760 – Description
initial v11 1 1 {{{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}}}. 2 3 My patch does the following:4 5 1) Changes the type of argument 1 of {{{get_term}}} to be mixed - {{{int}}}, {{{string}}}, or {{{object}}}[[BR]]6 2) Allows key in the {{{$taxonomy}}} cache bucket to be {{{name}}}, {{{slug}}}, or {{{term_id}}}[[BR]]7 3) Deprecates {{{get_term_by()}}}[[BR]]8 4) updates {{{clean_term_cache()}}} to also evict by {{{name}}} and {{{slug}}}9 10 The result is that {{{get_term()}}} can be called with {{{term_id}}}, {{{slug}}}, or {{{name}}} - and then CACHED by {{{term_id}}}, {{{slug}}}, or {{{name}}}.