Make WordPress Core

Changeset 7741


Ignore:
Timestamp:
04/18/2008 07:00:07 PM (16 years ago)
Author:
ryan
Message:

Consult the cached user object in get_usermeta to avoid queries.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/user.php

    r7696 r7741  
    149149    if ( !empty($meta_key) ) {
    150150        $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
    151         $metas = $wpdb->get_results( $wpdb->prepare("SELECT meta_key, meta_value FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );
     151        $user = wp_cache_get($user_id, 'users');
     152        // Check the cached user object
     153        if ( false !== $user && isset($user->$meta_key) )
     154            $metas = array($user->$meta_key);
     155        else
     156            $metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );
    152157    } else {
    153         $metas = $wpdb->get_results( $wpdb->prepare("SELECT meta_key, meta_value FROM $wpdb->usermeta WHERE user_id = %d", $user_id) );
    154     }
    155 
     158        $metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM $wpdb->usermeta WHERE user_id = %d", $user_id) );
     159    }
     160    error_log("$meta_key: " . var_export($metas, true), 0);
    156161    if ( empty($metas) ) {
    157162        if ( empty($meta_key) )
     
    161166    }
    162167
    163     foreach ($metas as $meta)
    164         $values[] = maybe_unserialize($meta->meta_value);
    165 
    166     if ( count($values) == 1 )
    167         return $values[0];
    168     else
    169         return $values;
     168    $metas = array_map('maybe_unserialize', $metas);
     169
     170    if ( count($metas) == 1 )
     171        return $metas[0];
     172    else
     173        return $metas;
    170174}
    171175
Note: See TracChangeset for help on using the changeset viewer.