WordPress仅在注册后从特定页面自动登录用户

时间:2016-09-14 作者:Nelson101

我有一个名为/join/的自定义连接页面,页面id=484,它使用一个插件来实现注册功能,只需在页面上直接放置一个短代码。

我需要在注册后自动登录用户并将其发送到特定页面。因此,我创建了一个可以工作的函数,但当我以管理员身份登录并转到添加新用户或使用函数wp\\u insert\\u user()时,它也会被触发。

下面是可以工作的代码,但如何将自动登录限制为仅在来自名为“join”的页面时才起作用。

function auto_login_new_user( $user_id ) {        
        wp_set_current_user($user_id);
        wp_set_auth_cookie($user_id, false, is_ssl()) ;
        wp_redirect( \'http://example.com/special.php\' );
        exit;
    }
add_action( \'user_register\', \'auto_login_new_user\',10,1 );
现在,当我告诉它在id为484的页面上执行时,这段代码不起作用了。为什么?

function auto_login_new_user( $user_id ) {        
            if (is_page(\'484\')){
            wp_set_current_user($user_id);
            wp_set_auth_cookie($user_id, false, is_ssl()) ;
            wp_redirect( \'http://example.com/special.php\' );
            exit;
        }
}
    add_action( \'user_register\', \'auto_login_new_user\',10,1 ); 

1 个回复
SO网友:Rishabh

使用此函数将管理员重定向到仪表板

function admin_login_redirect( $redirect_to, $request, $user )
{
    global $user;
    if( isset( $user->roles ) && is_array( $user->roles ) ) {
        if( in_array( "administrator", $user->roles ) ) {
            return $redirect_to;
        }
    }
}
add_filter("login_redirect", "admin_login_redirect", 10, 3);
有关更多/简短的详细信息,请阅读this article.

页面ID不带引号,请参见

if (is_page(\'484\')){
像这样更改此行

//Removed quotes from Page ID
if (is_page(484)){
另一种方法是Page Slug 也像这样

//Slug will come in quotes
if (is_page(\'Type_Page_Slug_Here\')){