Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I've just upgraded to WordPress 3.5.1 and the new object-cache.php version 2.0.2 that users some new switch to blog cache functionality.

We had this issue with the previous version of object cache, but i managed to solve it by delete the users keys when doing signup and activation of the blogs. This cleared the cached password from memcache, that for some reason is wrong.

I tried re-implement this, but it does not work. I've put this code in my register page:

wp_cache_key_delete("4e76434eea3c9d9cf9cb10bbf3f4a74b92:users:1"); 
wp_cache_delete('users');

the hash is my KEY SALT

and again on the activation page I use this

wp_cache_key_delete("4e76434eea3c9d9cf9cb10bbf3f4a74b92:users:".$user_id);
wp_cache_delete('users');

This should clear the cached users and their password, so auth will happens against the password in the MySQL database.

I added these 2 functions to object-cache.php to handle they key deletion

#hack by tonny

function wp_cache_key_delete($key) {
    global $wp_object_cache;

      return $wp_object_cache->key_delete($key);
}

and this

    function key_delete($key) {

            $mc =& $this->get_mc($group);

            $result = $mc->delete($key);

            @ ++$this->stats['delete'];
            $this->group_ops[$group][] = "delete $id";

            if ( false !== $result )
                    unset($this->cache[$key]);

            return $result;
    }

Has any of you had similar issues with users not beging able to login when signing up / registering a blog ?

share|improve this question
add comment

1 Answer

up vote 0 down vote accepted

This is now solved The solution was this in the activation script:

$blog_real_id = $wpdb->get_var("select blog_id from wp_bp_user_blogs where user_id = ".$user_id." limit 1");

wp_cache_key_delete("1:users:".$user_id);
wp_cache_key_delete($blog_real_id.":users:".$user_id);

This clears the cached user info for blog id 1 and the signed up blog ud. For some reason the password hash that is in memcache is wrong. Clearing it before logging in will authenticate aginst mysql insterad of the cached password in memcache.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.