有些企业网站要求很高,比如用户首次登录强制要求修改密码,这里提供一段代码,用于实现强制修改密码供参考。
通过代码可以实现,用户正常注册或者管理员在后台添加用户时,会添加首次登录标记,用户首次登录后会跳转到指定页面,如果不修改密码,访问网站也会跳转,直至修改过一次密码,清除首次登录标记。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
// 用户注册或创建时添加首次登录标记first_login add_action( 'user_register', 'set_first_login_meta' ); function set_first_login_meta($user_id) { update_user_meta($user_id, 'first_login', 'yes'); } // 用户登录检查标记first_login add_action( 'wp_login', 'set_first_login_meta_on_login', 10, 2 ); function set_first_login_meta_on_login( $user_login, $user ) { // 用户是否有标记 $is_first_login = get_user_meta( $user->ID, 'first_login', true ); if ( ! $is_first_login ) { // 如果不是首次登录,直接返回 return; } } // 登录时检测首次登录标记并跳转 add_action( 'template_redirect', 'redirect_first_time_user' ); function redirect_first_time_user() { // 获取当前用户 if ( is_user_logged_in() ) { $user = wp_get_current_user(); // 获取用户的首次登录标记 $is_first_login = get_user_meta( $user->ID, 'first_login', true ); // 如果是首次登录且标记存在 if ( $is_first_login === 'yes' ) { // 跳转到指定页面,例如 /wp-admin/profile.php if ( ! is_page( 'wp-admin/profile.php' ) ) { // 不在指定页面时跳转 wp_redirect( home_url( '/wp-admin/profile.php' ) ); // 修改跳转页面 exit; } } } } // 用户修改密码时,清除首次登录标记 add_action( 'profile_update', 'clear_first_login_meta_on_password_change', 10, 2 ); function clear_first_login_meta_on_password_change( $user_id, $old_user_data ) { // 检查密码是否发生了变化 if ( ! empty( $_POST['pass1'] ) && $_POST['pass1'] !== '' ) { // 清除首次登录标记 delete_user_meta( $user_id, 'first_login' ); } } |
其中的跳转页面链接/wp-admin/profile.php,可以根据实际情况修改,比如前端用户中心等。
声明:本站发布的所有资源均来自于互联网,所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
如侵犯到您的权益,请及时通知我们,我们会及时处理。邮箱:505289534@qq.com
评论(0)