WordPress.org

Make WordPress Core

Ticket #13170: 13170.diff

File 13170.diff, 1.2 KB (added by ryan, 4 years ago)

Slug -> id cache. Untested.

  • wp-includes/taxonomy.php

     
    463463                        if ( ! $_term ) 
    464464                                return $null; 
    465465                        wp_cache_add($term, $_term, $taxonomy); 
     466                        wp_cache_add($_term->slug, $term, "{$taxonomy}_slugs"); 
    466467                } 
    467468        } 
    468469 
     
    521522                $value = sanitize_title($value); 
    522523                if ( empty($value) ) 
    523524                        return false; 
     525                if ( $id = wp_cache_get($value, "{$taxonomy}_slugs") ) 
     526                        return get_term( (int) $id, $taxonomy, $output, $filter); 
    524527        } else if ( 'name' == $field ) { 
    525528                // Assume already escaped 
    526529                $value = stripslashes($value); 
    527530                $field = 't.name'; 
    528531        } else { 
    529                 $field = 't.term_id'; 
    530                 $value = (int) $value; 
     532                return get_term( (int) $value, $taxonomy, $output, $filter); 
    531533        } 
    532534 
    533535        $term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND $field = %s LIMIT 1", $taxonomy, $value) ); 
     
    535537                return false; 
    536538 
    537539        wp_cache_add($term->term_id, $term, $taxonomy); 
     540        wp_cache_add($term->slug, $term->term_id, "{$taxonomy}_slugs"); 
    538541 
    539542        $term = sanitize_term($term, $taxonomy, $filter); 
    540543