WordPress.org

Make WordPress Core

Changes between Initial Version and Version 11 of Ticket #21760


Ignore:
Timestamp:
09/04/12 16:28:22 (3 years ago)
Author:
wonderboymusic
Comment:

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 to get_term_by() calls are not cached
  • Ticket #21760 – Description

    initial v11  
    11{{{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}}}.