Wp-login.php--将登录用户重定向到自定义URL

时间:2015-05-09 作者:Christine Cooper

当用户登录时,我们可以轻松更改重定向URL(请参阅this, this, 或this), 但是如果用户转到/wp-login.php, 它们将被重定向到仪表板if they are already logged in.

我的问题是,当用户访问/wp-login.php and 已登录,如何将其重定向到自定义URL?

2 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

找出这样一个问题的根源是最好的方法。字面上

进去看看wp-login.php 并查找在任何HTML呈现发生之前激发的操作。你要找的钩子是login_init. 向其添加回调,检查用户是否已登录,如果已登录,则重定向用户。

这里唯一的另一个障碍是wp-login.php 还处理注销。所以你需要检查global $action 变量以确保未进行注销。

add_action(\'login_init\', \'wpse187831_redir_loggedin\');
function wpse187831_redir_loggedin()
{
    global $action;

    if (\'logout\' === $action || !is_user_logged_in()) {
        return;
    }

    wp_redirect(apply_filters(
        \'wpse187831_loggedin_redirect\',
        current_user_can(\'read\') ? admin_url() : home_url(),
        wp_get_current_user()
    ), 302);
    exit;
}
还有一些额外的东西:

呼叫apply_filters 因此,如果其他插件愿意,它们可以挂接并修改我的重定向。此筛选器获取重定向本身以及当前用户as a plugin.

SO网友:m4n0

您可以检查当前页面是否已登录或未使用$pagenow 全局变量和wp_redirect() 在条件内自定义URLis_user_logged_in

function redirect_logged_in_user() 
{
    if( is_user_logged_in ) {
      wp_redirect(\'http://customurl\');
    }
}

global $pagenow;
if( $pagenow == \'wp-login.php\')     
redirect_logged_in_user();

结束

相关推荐

网站仅对注册用户可见(非wp-admin)

我已经创建了一个带有自定义登录名的页面,使用wp_login_form() 功能,但如何以中所述的类似方式将所有访问者重定向到该页面that topic?我的代码如下所示:function redirect_to_login_if_guest() { global $post; if ( ! is_admin() && ! is_user_logged_in() && $post->ID !== 4667 ) { w