我已经为此工作了一段时间了。我想在多站点安装中将特定用户角色重定向到后端的特定页面。我终于能够做到这一点,但我得到一个错误,页面重定向错误,但我可以看到URL是正确的。
代码如下:
add_action(\'wp_login\', function(){
global $logging_in;
$logging_in = true;
});
add_action(\'current_screen\', \'primary_login_redirect\');
function primary_login_redirect( $user ) {
global $logging_in;
$userID = get_current_user_id();
$user_info = get_userdata($userID);
if (($logging_in = true) && ($user_info->primary_blog)) {
$primary_url = get_blogaddress_by_id($user_info->primary_blog) . \'wp-admin/edit.php?post_type=visitor\';
$site_id = $user_info->primary_blog;
if (!current_user_can_for_blog($site_id, \'create_users\')) {
wp_redirect($primary_url);
die();
}
}
}
为了能够检查功能,我必须创建
wp_login 设置的函数
$logging_in. 如果我使用具有
create_users 功能我直接进入仪表板,但如果我与不具备此功能的用户登录,我将被重定向到
example.com/subsite/wp-admin/edit.php?post_type=visitor (其中子网站是用户的主多网站)。但由于某种原因,当这个重定向发生时,我得到了一个错误。
The page isn’t redirecting properly 显示在浏览器中。
SO网友:joq3
如果有人感兴趣,以下是解决方案:
add_filter(\'login_redirect\', function( $url, $query, $user ) {
$user_info = get_userdata($user->ID);
return get_blogaddress_by_id($user_info->primary_blog) . \'wp-admin/?login=1\';
}, 10, 3);
add_action(\'current_screen\', function ( $user ) {
$userID = get_current_user_id();
$user_info = get_userdata($userID);
if ($_GET[\'login\'] == 1 && $user_info->primary_blog) {
$primary_url = get_blogaddress_by_id($user_info->primary_blog) . \'wp-admin/edit.php?post_type=visitor\';
$site_id = $user_info->primary_blog;
if (!current_user_can_for_blog($site_id, \'create_users\')) {
wp_redirect( $primary_url );
exit();
}
}
});