私はWordpress Multisiteを運営しています。
最初のユーザーに新しいサイトにログインして管理者ロールを割り当て、他のロールを管理できるようにします。 2人目のユーザー、およびそれ以降その特定のサイトにいるすべてのユーザーは、投稿者だけになります。
私が新しいサイトを作成するとき、そこに最初にログインしたユーザーも管理者の役割を持ち、それ以外のすべての人は投稿者の役割を持つべきです。これどうやってするの?
次の関数でwpmu_new_user
とwpmu_activate_user
の両方を使用しようとしましたが、これは機能しません。作成したユーザーは、この関数を使用して設定しようとしても役割を持ちません。
function test_onboarding_user($user_id){
$user = get_user_by( 'id', $user_id );
if (!$user->exists()) {
return;
}
$current_user_list = get_users();
if(count($current_user_list) == 2){ // The first user is the Super Admin, so this user should be #2
$user->set_role('administrator');
} else {
$user->set_role('contributor');
}
}
add_action( 'wpmu_new_user', 'test_onboarding_user', 20, 1 );
接続ユーザーがブログに属していることを設定するには、フックwp_login
でそれを行う必要があります。これは、ユーザーが接続されていることを意味します。
const ROLE_ADMINISTRATOR = "administrator";
const ROLE_CONTRIBUTOR = "contributor";
add_action("wp_login", function ($user_login, \WP_User $user) {
if ( !is_multisite()
|| is_user_member_of_blog()
) {
return;
}
$usersAdministrator = get_users([
"role" => ROLE_ADMINISTRATOR,
]);
if (count($usersAdministrator) > 0) {
$newRole = ROLE_CONTRIBUTOR;
} else {
$newRole = ROLE_ADMINISTRATOR;
}
add_user_to_blog(
get_current_blog_id()
, $user->ID
, $newRole
);
}, 10, 2);