使用提供的另一个答案,似乎有两种方法可以将用户及其分配的角色从主站点复制到WordPress多站点网络中的子站点。
它可以设置为添加当前用户或站点中的所有用户(我选择了主网络站点,blog_id=1
) 当他们访问页面时访问子网站。
下面是如何做到这两个,选择一个并添加到functions.php
:
Add only the user to each subsite
function add_current_user_to_site() {
if(!is_user_logged_in()) {
return false;
}
$current_user = wp_get_current_user();
$blog_id = get_current_blog_id();
$user_id = ($current_user->ID);
switch_to_blog(1);
$get_role = ($current_user->caps);
$add_role = key($get_role);
restore_current_blog();
if (!is_user_member_of_blog( $user_id, $blog_id ) ) {
add_user_to_blog( $blog_id, $user_id, $add_role );
}
}
add_action(\'wp\',\'add_current_user_to_site\');
<小时>
Add all users to each subsite
function add_all_users_to_site() {
if(!is_user_logged_in()) {
return false;
}
$users = get_users(\'blog_id=1\');
$sites = get_sites();
foreach ($sites as $site) {
foreach ($users as $user) {
$blog_id = get_current_blog_id();
$user_id = ($user->ID);
switch_to_blog($site->id);
$get_role = ($user->caps);
$add_role = key($get_role);
restore_current_blog();
if (!is_user_member_of_blog( $user_id, $blog_id ) ) {
add_user_to_blog( $blog_id, $user_id, $add_role );
}
}
}
}
add_action(\'wp\',\'add_all_users_to_site\');