现在的wordpress开发主题者都慢慢的走向多用户化,也就说明了wordpress开启注册走向多用户web2.0越来越近。但是对于开放性注册的wordpress站点wordpress登录跳转是需要考虑的,首先是注册后自动跳转免再次点击登录,二来还有应该考虑的是检测登录跳转这都是必须要多多考虑的。

wordpress登录跳转之自动登录并重定向

注册后自动登录并且重定向到指定页面,其实也是实现首次登录重定向的最简便的方法。


/**
  * 用户注册成功后自动登录,并跳转到指定页面
  * https://www.ruikeedu.com
  */  
function auto_login_new_user( $user_id ) {
	// 用户注册后自动登录
	wp_set_current_user($user_id);
	wp_set_auth_cookie($user_id);
	// 这里跳转到 http://域名/about 页面,请根据自己的需要修改
	wp_redirect( home_url().'about' ); 
	exit;
}
add_action( 'user_register', 'auto_login_new_user');

/*  
*自定义登陆之后的重定向链接首页
* https://www.ruikeedu.com
*/  
function soi_login_redirect($redirect_to, $request, $user)   
{   
    return (is_array($user->roles) && in_array('administrator', $user->roles)) ? admin_url() : site_url();   
}    
add_filter('login_redirect', 'soi_login_redirect', 10, 3);  
/*  
*自定义登陆之后的重定向到特殊的页面  
* https://www.ruikeedu.com 
*/  
function login_redirect( $redirect_to, $request, $user ){   
    return home_url('custom-page');   
}   
add_filter( 'login_redirect', 'login_redirect', 10, 3 );  

wordpress登录跳转之一定时间内登录重定向

注册后的一定时间内,不管是第几次登录,都跳转到指定页面。


/**
  * 注册一定时间内登录重定向到指定页面
  * https://www.ruikeedu.com
  */
function time_limit_login_redirect( $to, $requested, $user ){
	if( !isset( $user->user_login ) ){ 
		return $to;
	}
	$regtime = strtotime($user->user_registered);
	$now = strtotime("now");
	$diff = $now - $regtime;
	$hours = $diff / 60 / 60;
	if( $hours < 48 ){ // 注册后48小时内登录重定向到该页面
		return "/about"; 
	} else {
		return admin_url(); //WP管理后台
	}
}
add_filter('login_redirect', 'time_limit_login_redirect', 10, 3);

wordpress登录跳转之检测登录状态跳转


//用户登陆
if (is_user_logged_in()) {
	$url = get_bloginfo('url');
    Header("Location:$url");
} 

写到这里不管wordpress登录跳转是否应用到您主题模板,但是最后一项检测登录状态是必须的,那么今天的wordpress登录跳转就到了。