将用户转发到Wordpress中的自定义仪表板

时间:2013-03-13 21:24:52

标签: php wordpress redirect permissions user-roles

我试图扮演角色'订阅者' edit_post的能力。 虽然这是成功的,但我似乎无法在登录时引导用户远离默认的wordpress wp-admin页面。

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

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

我之所以这样做,是因为我有一个自定义信息中心供他们使用,位于http://website.com/login/customdashboard/

我更喜欢这个功能。

我尝试过插件但没有成功:
"彼得的登录重定向" &安培;也是" s2成员(登录欢迎页面)"

我在没有成功的情况下尝试了以下功能:

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');

非常感谢这方面的任何帮助。

1 个答案:

答案 0 :(得分: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();
    }
}

如果您需要根据当前页面对其进行过滤,则可以使用全局$pagenow,其中包含值index.phpprofile.phptools.php等。