I\'m working on a WPMU multisite install but have run into a wee problem.
I create a user during a signup process on my primary domain. With something like the following
Yes, I had this issue. And, if you need special user management, you'll have to set up a new autonomous (single site) WordPress installation.
That's the way Multisite works. All users are automatically included as subscribers of all sites in the network.
From the article Don't Use WordPress Multisite:
If you need users to be on different sites, but not aware that they’re on a network, don’t use MultiSite! Now, yes, there are ways around this, however it’s an auditing nightmare for any large company, and a security risk that you should be aware of before you start.
This plugin may be of help (but am not sure): Multisite User Management.
From this recent answer I gave on WordPress StackExchange, some little hacks may be helpful:
(I did small tests in my development environment, but please, test extensively)
/*
* Redirect users that are not members of the current blog to the home page,
* if they try to access the profile page or dashboard
* (which they could, as they have subscriber privileges)
* http://not-my-blog.example.com/wp-admin/profile.php
*/
add_action( 'admin_init', 'wpse_57206_admin_init' );
function wpse_57206_admin_init()
{
if( !is_user_member_of_blog() )
{
wp_redirect( home_url() );
exit();
}
}
/*
* Redirect users that are not members of the current blog to the home page,
* if they try to access the admin
* http://not-my-blog.example.com/wp-admin/
*/
add_action( 'admin_page_access_denied', 'wpse_57206_access_denied' );
function wpse_57206_access_denied()
{
wp_redirect( home_url() );
exit();
}
/*
* Redirect users that are not members of the current blog to the home page,
* if they try to login
* http://not-my-blog.example.com/wp-login.php
*/
add_filter( 'login_redirect', 'wpse_57206_login_redirect' );
function wpse_57206_login_redirect( $url )
{
global $user;
if ( !is_user_member_of_blog() )
{
$url = home_url();
}
return $url;
}
/*
* Hide the admin bar for users which are not members of the blog
*/
add_filter( 'show_admin_bar', 'wpse51831_hide_admin_bar' );
function wpse51831_hide_admin_bar( $bool )
{
if( !is_user_member_of_blog() )
{
$bool = false;
}
return $bool;
}