User Roles Not Sticking

I have added a custom user role of super_poster, basically they make 20 posts and once they hit $postlimit get auto-moved back down to contributer level, the moving down and post counting works ok, my problem is that the wp system adds the user into “none” instead of into contributer role

if ($count_posts >= $postlimit) {
    $current_user->remove_role( 'super_poster' );
    $current_user->add_role( 'contributer' );


contributer is set for new user default on sign-up, so the situation i have is in wp-admin user edit page i can see the newly moved (into contributer from super poster) has still got “additional capabilities of contributer” however user role dropdown says –No role for this site —

wp-admin users page shows the super_poster as in user group “none”

what gives?

Solutions Collecting From Web of "User Roles Not Sticking"

You might want to use WP_User::set_role( 'contributor' ) instead. It unsets all current roles and sets the new one (the argument) too.

So the above would be

if ($count_posts >= $postlimit) {
  $current_user->set_role( 'contributor' );

“contributor” is spelled with an O, perhaps you’ve just misspelled it?

sorry for my late reply, work and family life took control, regarding the issue i had, i tried John P Bloch suggestion and it resolved to being exactly the same: user role = None and No Role For This Site, i did quite a lot of researching via codex and couldnt realy come up with much, it dawned on me that im using a theme that sets user role as contributer on sign-up by default, so i tried the little block below and it does exactly what i need which is when user role is changed from custom role to Contributer, shows them in wp user panel as being a contributer rather than having no role.

//$current_user->set_role( 'contributer' );

Dont know if its truly semantic from a WP way of doing this but it seems to be working the way i want it to do.

Regards Martin