阻止已登录用户访问自定义登录页面

时间:2016-11-08 作者:Terungwa

我创建了一个自定义登录页面,与默认登录页面不同。自定义登录页面工作正常,没有任何错误,并在登录到指定页面后重定向。

但是,当用户登录wordpress并且出于任何原因再次尝试查看登录页面时,我需要阻止访问此登录页面。应该将用户重定向到主页或我指定的任何其他页面。我使用了get\\u queryed\\u object()函数返回页面对象的post title元素(在本用例中为“Login”)。

当$page\\u title=“Login”(如下面的代码所示)时,应强制重定向的条件检查没有任何作用,因为即使我登录到站点,我仍然可以访问登录页面。

function redirect_login_page() {
   $page_object = get_queried_object();
   $page_title = get_queried_object()->post_title;
   $login_page  = home_url( \'/login/\' );
   $home_page  = home_url();
   $nf_page  = home_url(\'404\');
   $page_viewed = basename($_SERVER[\'REQUEST_URI\']);

    if (!is_user_logged_in() ) {
        if( $page_viewed == "wp-login.php" && $_SERVER[\'REQUEST_METHOD\'] == \'GET\') {
            wp_redirect($login_page);
            exit;
       }
    }
    else
    {
      if( ($page_viewed == "wp-login.php" or $page_viewed == "login.php" OR $page_title == \'Login\') && $_SERVER[\'REQUEST_METHOD\'] == \'GET\') {
      wp_redirect($home_page);
      exit;
     }
    }
}

add_action(\'init\',\'redirect_login_page\');
如何对已登录的用户强制执行此重定向。

1 个回复
最合适的回答,由SO网友:Ihor Vorotnov 整理而成

您应该尽早重定向。最好的钩子是template_redirect. 检查2个条件-如果页面为“登录”且用户已登录:

function redirect_login_page() {

    if( is_page( \'login\' ) && is_user_logged_in() ) {
        wp_redirect( home_url() );
        exit;
    }

}
add_action( \'template_redirect\', \'redirect_login_page\' );

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register