Ok, I think I figured it out. It took some serious digging and an embarrassing moment in front of a client to get to the bottom of this.
The culprit seems to have been the Join My Multisite plugin. I had it activated but not configured and once I updated the settings for the plugin, everything worked.
What I discovered was that users created from the site level as opposed the network level were being created just fine but were given no role on the site. As in they were a user on the site with no role. I had to dig into the database and in the wp_usermeta table I located the user accounts that I had been testing and found that for wp_34_capabilities
the value was being set as a:0:{}
whereas a normal user should show something like a:1:{s:10:"subscriber";b:1;}
.
When I created users from the network dashboard and manually added them to a site, everything worked fine. It was when I went to experiment with the Join My Multisite plugin as an alternative registration method for testing when I discovered that it had been active on the site for a while now and had a null value for default user role. Sure enough, updating that field made it so that registrations made through the site would work…almost. I just now ran another test and discovered that any registration made from the site will use the default user role as defined in the Join My Multisite plugin settings regardless of whether a site admin specifies a different role when adding a new user.
So basically now…I can either find an alternative plugin or deal with all users having to be registered with the default role and their privileges elevated manually by an administrator. Oh boy. I don’t know of other plugins that provide an elegant way for users to register on a sub-site. Very open to recommendations.