欢迎光临
我们一直在努力

WordPress用户首次登录强制修改密码

有些企业网站要求很高,比如用户首次登录强制要求修改密码,这里提供一段代码,用于实现强制修改密码供参考。

通过代码可以实现,用户正常注册或者管理员在后台添加用户时,会添加首次登录标记,用户首次登录后会跳转到指定页面,如果不修改密码,访问网站也会跳转,直至修改过一次密码,清除首次登录标记。

将代码添加到主题函数模板functions.php中:

// 用户注册或创建时添加首次登录标记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,可以根据实际情况修改,比如前端用户中心等。

赞(0) 打赏
未经允许不得转载:WORDPRESS大侠 » WordPress用户首次登录强制修改密码

评论 抢沙发

评论前必须登录!

 

更好的WordPress主题

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册