wordpress 注册用户第一次登录必须修改密码,如何实现这个修改密码的功能呢?
首先,新建一个表单页面
<!-- 更改密码 --> <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> 密码不匹配</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> 密码修改失败</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(); } ?>
然后必须在用户登录以后的界面添加如下逻辑
至此,wordpress 注册用户第一次登录必须修改密码功能就完成了!
你可能对这些文章感兴趣:
- 一个虚拟主机如何搭建多个网站?
- 使WordPress投稿和订阅用户可以上传文件
- 分享wordpress让指定代码只运行一次的实现办法
- wordpress集成灯箱插件fancybox3
- wordpress函数wp_update_user
- 实现Bootstrap菜单可点击及鼠标悬停显示下拉菜单
- wordpress后台只显示自己发布的文章
- 输出Bootstrap风格化的wordpress菜单
- wordpress短代码实现分类文章ajax筛选
- wordpress分类页调用所有子分类文章列表
- wordpress给用户中心author页添加评论功能
- 高度塌陷到底是什么如何解决?
- 导入wordpress数据库出现 1067 - Invalid default value for 'scheduled_date_gmt'的解决办法
- 宝塔面板无法记录网站日志解决办法
如有疑问,请前往问答中心反馈!
反馈