^ 回到顶部
  • 人生没有定律,每个人都有自己的节奏
  • 本站wordpress建站教程均通过实践后发布,希望对你有帮助,如果有代码出错,请联系站长解决
  • 希望你的坚持,都是因为热爱,而不是因为不甘心
  • 8年wordpress建站经验,5星服务品质
  • 那些不愿意让你吃亏的人,才是真正值得你深交的人,也是值得你付出时间的人
  • 腾讯云3年2核2G新品轻量限时特惠只需408元

wordpress强制用户第一次登录时修改密码

wordpress 注册用户第一次登录必须修改密码,如何实现这个修改密码的功能呢?

首先,新建一个表单页面

2 核 2G 限时特惠 396 元/3 年    宝塔建站 10850 大礼包

<!-- 更改密码 -->
<article class="change-password-content">
<div class = "change-password-messages">
<p>您必须更改密码,才能继续访问网站内容</p>
</div>
<div class = "change-password-form">
<label for="password">新密码></label><br />
<input type="password" class="form-control password1" />
<label for="password2">重复密码</label><br />
<input type="password" class="form-control password2" />
<input type="submit" name="change-password" value="提交修改" class="btn-change-pass" />
</div>
</article>
<script>
$(document).ready(function() {
// admin-ajax
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
function cvf_form_validate(element) {
element.effect("highlight", { color: "#F2DEDE" }, 1500);
element.parent().effect('shake');
}
// 表单按钮
$('body').on('click', '.btn-change-pass', function(e) {
// 验证空字段或不匹配的密码
if ($('.change-password-form .password1').val() === '') {
cvf_form_validate($('.password1'));
} else if ($('.change-password-form .password2').val() === '') {
cvf_form_validate($('.password2'));
} else if ($('.change-password-form .password2').val() !== $('.change-password-form .password1').val()) {
$(".change-password-messages").html('<p class = "bg-danger"><span class = "glyphicon glyphicon-remove-circle"></span>&nbsp; 密码不匹配</p>');
} else {
// 自定义加载 GIF 图像
$(".change-password-messages").html('<p><a data-fancybox="gallery" href="<?php bloginfo('template_url'); ?>/images/loading.gif"title="wordpress 强制用户第一次登录时修改密码" ><img class="aligncenter size-full wp-image" src="<?php bloginfo('template_url'); ?>/images/loading.gif" alt="wordpress 强制用户第一次登录时修改密码" /></a></p>');
// 定义 Ajax 参数
var data = {
'action': 'wpsite_change_password',
'lb_action': 'change_password',
'new_password': $('.change-password-form .password2').val()
};
$.post(ajaxurl, data, function(response) {
//检测收到的 Ajax 响应,然后为每个特定的响应做必要的逻辑
if(response === 'success') {
$(".change-password-messages").html('<p class = "bg-success">密码修改成功 <br /><a href = "<?php echo home_url(); ?>">点击这里继续</a></p>');
$('.change-password-form').hide();
} else if (response === 'error') {
$(".change-password-messages").html('<p class = "bg-danger"><span class = "glyphicon glyphicon-remove-circle"></span>&nbsp; 密码修改失败</p>');
$('.change-password-form').show();
}
});
}
});
});
</script>

ajax 交互,在 functions 文件中处理逻辑

<?php
add_action('wp_ajax_wpsite_change_password', array('wpsite_change_password', 'lb_change_password') );
add_action('wp_ajax_nopriv_wpsite_change_password', array('wpsite_change_password', 'lb_change_password') );
function wpsite_change_password() {
global $current_user;
if(isset($_POST['lb_action']) && $_POST['lb_action'] == 'change_password') {
$password = sanitize_text_field($_POST['new_password']);
// 定义将传递给 wp_update_user()
$userdata = array(
'ID' => $current_user->ID,
'user_pass' => $password
);
$user_id = wp_update_user($userdata);
// 检查返回的字符串是否等于当前的用户 ID
if($user_id == $current_user->ID){
update_user_meta($current_user->ID, 'wpsite_changepass_status', 1);
echo 'success';
} else {
echo 'error';
}
}
// 始终退出,以避免进重复操作
exit();
}
?>

然后必须在用户登录以后的界面添加如下逻辑

付费可见

已有0人支付

至此,wordpress 注册用户第一次登录必须修改密码功能就完成了!

赠人玫瑰,手有余香。