1

我正在尝试赋予角色“订阅者”编辑帖子的能力。虽然这是成功的,但我似乎无法在登录时引导用户离开默认的 wordpress wp-admin 页面。

每当我尝试建议的解决方案时,登录(具有 edit_post 权限)的用户都会被重定向到 wp-admin 页面。

当他们登录时,无论我做什么,wordpress 都会将它们转发给 wp-admin,显示 wordpress 后端。(我不希望用户看到这个)

我想这样做的原因是因为我有一个自定义仪表板供他们使用,位于http://website.com/login/customdashboard/

我希望这是一个函数。

我试过插件但没有成功:
“彼得的登录重定向”和“s2member(登录欢迎页面)”

我尝试了以下功能但没有成功:

function soi_login_redirect( $redirect_to, $request, $user  ) {
    return ( is_array( $user->roles ) && in_array( 'administrator', $user->roles ) ) ? admin_url() : site_url();
} // end soi_login_redirect
add_filter( 'login_redirect', 'soi_login_redirect', 10, 3 );

另一个尝试没有成功:

function redirect_login_page(){
$page_viewed = basename($_SERVER['REQUEST_URI']);
 $login_page  = site_url();
 if( $page_viewed == "wp-login.php" && $_SERVER['REQUEST_METHOD'] == 'GET') {
 wp_redirect($login_page);
 exit();
 }
}
add_action('init','redirect_login_page');

在这方面的任何帮助将不胜感激。

4

1 回答 1

1

如果要重定向所有/wp-admin地址,可以使用:

add_action( 'admin_init', 'redirect_so_15396771' );

function redirect_so_15396771()
{   
    if ( defined( 'DOING_AJAX' ) && DOING_AJAX )  
        return;

    // http://codex.wordpress.org/Roles_and_Capabilities
    if ( !current_user_can('delete_users') ) {
            wp_redirect( site_url( '/login/customdashboard/' ) );
            exit();
    }
}

如果你需要根据当前页面过滤这个,你可以使用 global $pagenow,它的值index.php是 , profile.php,tools.php等。

于 2013-03-13T21:32:39.683 回答