WPMU для WordPress WPMU для многопользовательской сети

Я работаю над многоузловой установкой WPMU, но столкнулся с проблемой wee.

Я создаю пользователя во время процесса регистрации в моем основном домене. Что-то вроде следующего.

$username = 'myname-'.time(); $user_id = wpmu_create_user($username,'anypassword','example@gmail.com'); add_user_to_blog(1, 5, 'subscriber'); $user = wp_signon(array( "user_login" => $username, "user_password" => 'anypassword', "remember" => true )); 

То, что я делаю, это создать пользователя, а затем назначить его только для основного домена и войти в систему с помощью wp_signon. Тем не менее, при посещении дочернего сайта сети в субдомене, что очень важно в его доступе. Я все еще вошел в систему, и меню панели инструментов наверху все еще отображается.

Я использовал is_user_blog (), чтобы попытаться определить, должен ли пользователь видеть это и может направить их на страницу входа в поддомену. Но это означало бы прекращение существующего сеанса входа в основной домен. В идеале было бы здорово, если бы вы вошли в основной домен и также вошли в поддоменю, но оба были обработаны отдельно.

Кто-нибудь сталкивался с этой проблемой раньше?

    Да, у меня была эта проблема. И, если вам нужно специальное управление пользователями, вам нужно будет установить новую автономную (одностраничную) установку WordPress.

    Так работает Multisite. Все пользователи автоматически включаются в качестве subscribers всех сайтов в сети.

    Из статьи « Не использовать WordPress Multisite» :

    Если вам нужно, чтобы пользователи находились на разных сайтах, но не знали, что они в сети, не используйте MultiSite! Теперь, да, есть способы обойти это, однако это кошмар одитинга для любой крупной компании и риск безопасности, о котором вы должны знать, прежде чем начать.

    Этот плагин может помочь (но не уверен): Multisite User Management .

    Из этого недавнего ответа, который я дал в WordPress StackExchange, некоторые небольшие взломы могут быть полезны:
    (Я сделал небольшие тесты в моей среде разработки, но, пожалуйста, тщательно протестируйте)

     /* * 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; }