• 开启全站HTTPS。2017-04-29
  • 本站为非盈利性站点,所得收入全部用于网站服务器及其他费用。2015-10-15
  •    2年前 (2016-02-26)  WordPress教程 |   抢沙发  33 
    文章评分 0 次,平均分 0.0

    对于已经开放注册的WordPress站点,用户登录后的页面跳转是必须要考虑的。今天就说说wordpress登录后跳转或指定页面,以下代码都可以添加到主题的 functions.php

    wordpress登录后跳转指定页面

    1. /**
    2. * 用户注册成功后自动登录,并跳转到指定页面
    3. */
    4. function auto_login_new_user( $user_id ) {
    5. ????????// 用户注册后自动登录
    6. ????????wp_set_current_user($user_id);
    7. ????????wp_set_auth_cookie($user_id);
    8. ????????// 这里跳转到 http://域名/about 页面,请根据自己的需要修改
    9. ????????wp_redirect( home_url().'about' );
    10. ????????exit;
    11. }
    12. add_action( 'user_register', 'auto_login_new_user');

    一定时间内登录重定向

    1. /**
    2. * 注册一定时间内登录重定向到指定页面
    3. */
    4. function time_limit_login_redirect( $to, $requested, $user ){
    5. ????????if( !isset( $user->user_login ) ){
    6. ????????????????return $to;
    7. ????????}
    8. ????????$regtime = strtotime($user->user_registered);
    9. ????????$now = strtotime("now");
    10. ????????$diff = $now - $regtime;
    11. ????????$hours = $diff / 60 / 60;
    12. ????????if( $hours < 48 ){ // 注册后48小时内登录重定向到该页面
    13. ????????????????return "/about";
    14. ????????} else {
    15. ????????????????return admin_url(); //WP管理后台
    16. ????????}
    17. }
    18. add_filter('login_redirect', 'time_limit_login_redirect', 10, 3);

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

    一定时间内首次登录重定向(Cookie 版)

    1. /**
    2. * 注册后一定时间内首次登录重定向(Cookie 版)
    3. */
    4. function redirectOnFirstLogin( $redirect_to, $requested_redirect_to, $user )
    5. {
    6. // 重定向的页面地址
    7. ????????$redirect_url = 'http://yoursite.com/firstloginpage';
    8. // 重定向的次数
    9. ????????$num_redirects = 1;
    10. // 通过 Cookie 记录登录次数
    11. // 指定注册后多久时间内登录(防止用户清空 Cookie 后重复重定向)
    12. // 172800 秒 = 48 小时
    13. ????????$message_period = 172800;
    14. // If they're on the login page, don't do anything
    15. ????????if( !isset( $user->user_login ) )
    16. ????????{
    17. ????????????????return $redirect_to;
    18. ????????}
    19. // 用来保存登录记录的 Cookie 键名
    20. ????????$key_name = 'redirect_on_first_login_' . $user->ID;
    21. ????????if( strtotime( $user->user_registered ) > ( time() - $message_period )
    22. ????????????????&& ( !isset( $_COOKIE[$key_name] ) || intval( $_COOKIE[$key_name] ) < $num_redirects )
    23. ????????????????)
    24. ????????{
    25. ????????????????if( isset( $_COOKIE[$key_name] ) )
    26. ????????????????{
    27. ????????????????????????$num_redirects = intval( $_COOKIE[$key_name] ) + 1;
    28. ????????????????}
    29. ????????????????setcookie( $key_name, $num_redirects, time() + $message_period, COOKIEPATH, COOKIE_DOMAIN );
    30. ????????????????return $redirect_url;
    31. ????????}
    32. ????????else
    33. ????????{
    34. ????????????????return $redirect_to;
    35. ????????}
    36. }
    37. add_filter( 'login_redirect', 'redirectOnFirstLogin', 10, 3 );

    使用Cookie记录登录次数,如果在一定时间内登录,且登录次数小于指定次数,就重定向到指定页面。

    一定时间内首次登录重定向(字段 版)

    1. /**
    2. * 注册后一定时间内首次登录重定向(字段 版)
    3. */
    4. function redirectOnFirstLogin( $redirect_to, $requested_redirect_to, $user )
    5. {
    6. // 重定向的页面
    7. ????????$redirect_url = 'http://yoursite.com/firstloginpage';
    8. // 重定向的次数
    9. ????????$num_redirects = 1;
    10. // If implementing this on an existing site, this is here so that existing users don't suddenly get the "first login" treatment
    11. // On a new site, you might remove this setting and the associated check
    12. // Alternative approach: run a script to assign the "already redirected" property to all existing users
    13. // Alternative approach: use a date-based check so that all registered users before a certain date are ignored
    14. // 172800 秒 = 48 小时(用来排除那些老用户)
    15. ????????$message_period = 172800;
    16. // If they're on the login page, don't do anything
    17. ????????if( !isset( $user->user_login ) )
    18. ????????{
    19. ????????????????return $redirect_to;
    20. ????????}
    21. //添加一个字段来记录登录次数
    22. ????????$key_name = 'redirect_on_first_login';
    23. ????????$current_redirect_value = get_user_meta( $user->ID, $key_name, true );
    24. ????????if( strtotime( $user->user_registered ) > ( time() - $message_period )
    25. ????????????????&& ( '' == $current_redirect_value || intval( $current_redirect_value ) < $num_redirects )
    26. ????????????????)
    27. ????????{
    28. ????????????????if( '' != $current_redirect_value )
    29. ????????????????{
    30. ????????????????????????$num_redirects = intval( $current_redirect_value ) + 1;
    31. ????????????????}
    32. ????????????????update_user_meta( $user->ID, $key_name, $num_redirects );
    33. ????????????????return $redirect_url;
    34. ????????}
    35. ????????else
    36. ????????{
    37. ????????????????return $redirect_to;
    38. ????????}
    39. }
    40. add_filter( 'login_redirect', 'redirectOnFirstLogin', 10, 3 );

    使用自定义字段来保存登录次数,如果用户注册时间小于指定时间(比如 48小时),且字段的数值小于指定次数,就重定向!

     

    除特别注明外,本站所有文章均为小浩博客原创,转载请注明出处来自https://www.xhsay.com/specify-the-login-page-or-jump.html

    关于
    小浩博客(www.xhsay.com)是由Tovey建立的个人站点,主要致力于整合并分享各种互联网及网站建设的资源。

    发表评论

    表情 格式

    暂无评论

    切换注册

    登录

    忘记密码 ?

    您也可以使用第三方帐号快捷登录

    切换登录

    注册