学做网站培训课程介绍

当前位置:

WordPress网站前台添加重置修改密码功能

WordPress网站修改密码是通过邮箱SMTP邮件发送来实现的,但是很多主机不支持邮箱发送功能,所以默认的Wordpress重置修改密码功能非常不好用。

下面介绍一下如何在Wordpress网站前台添加重置修改密码功能。同时前端用户中心中还需要用户密码重置,我们可以通过短代码在主题的任何位置插入重置密码的表单。

Wordpress网站前台添加重置修改密码功能

第一步:在 functions 文件当中插入如下代码:


function pippin_change_password_form() {
global $post;

if (is_singular()) :
$current_url = get_permalink($post->ID);
else :
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") $pageURL .= "s";
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
else $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
$current_url = $pageURL;
endif;
$redirect = $current_url;

ob_start();

// show any error messages after form submission
pippin_show_error_messages(); ?>

<?php if(isset($_GET['password-reset']) && $_GET['password-reset'] == 'true') { ?>
<div class="pippin_message success">
<span><?php _e('Password changed successfully', 'rcp'); ?></span>
</div>
<?php } ?>
<form id="pippin_password_form" method="POST" action="<?php echo $current_url; ?>">
<fieldset>
<p>
<label for="pippin_user_pass"><?php _e('New Password', 'rcp'); ?></label>
<input name="pippin_user_pass" id="pippin_user_pass" class="required" type="password"/>
</p>
<p>
<label for="pippin_user_pass_confirm"><?php _e('Password Confirm', 'rcp'); ?></label>
<input name="pippin_user_pass_confirm" id="pippin_user_pass_confirm" class="required" type="password"/>
</p>
<p>
<input type="hidden" name="pippin_action" value="reset-password"/>
<input type="hidden" name="pippin_redirect" value="<?php echo $redirect; ?>"/>
<input type="hidden" name="pippin_password_nonce" value="<?php echo wp_create_nonce('rcp-password-nonce'); ?>"/>
<input id="pippin_password_submit" type="submit" value="<?php _e('Change Password', 'pippin'); ?>"/>
</p>
</fieldset>
</form>
<?php
return ob_get_clean();
}

// password reset form
function pippin_reset_password_form() {
if(is_user_logged_in()) {
return pippin_change_password_form();
}
}
add_shortcode('password_form', 'pippin_reset_password_form');


function pippin_reset_password() {
// reset a users password
if(isset($_POST['pippin_action']) && $_POST['pippin_action'] == 'reset-password') {

global $user_ID;

if(!is_user_logged_in())
return;

if(wp_verify_nonce($_POST['pippin_password_nonce'], 'rcp-password-nonce')) {

if($_POST['pippin_user_pass'] == '' || $_POST['pippin_user_pass_confirm'] == '') {
// password(s) field empty
pippin_errors()->add('password_empty', __('Please enter a password, and confirm it', 'pippin'));
}
if($_POST['pippin_user_pass'] != $_POST['pippin_user_pass_confirm']) {
// passwords do not match
pippin_errors()->add('password_mismatch', __('Passwords do not match', 'pippin'));
}

// retrieve all error messages, if any
$errors = pippin_errors()->get_error_messages();

if(empty($errors)) {
// change the password here
$user_data = array(
'ID' => $user_ID,
'user_pass' => $_POST['pippin_user_pass']
);
wp_update_user($user_data);
// send password change email here (if WP doesn't)
wp_redirect(add_query_arg('password-reset', 'true', $_POST['pippin_redirect']));
exit;
}
}
}
}
add_action('init', 'pippin_reset_password');

if(!function_exists('pippin_show_error_messages')) {
// displays error messages from form submissions
function pippin_show_error_messages() {
if($codes = pippin_errors()->get_error_codes()) {
echo '<div class="pippin_message error">';
// Loop error codes and display errors
foreach($codes as $code){
$message = pippin_errors()->get_error_message($code);
echo '<span class="pippin_error"><strong>' . __('Error', 'rcp') . '</strong>: ' . $message . '</span><br/>';
}
echo '</div>';
}
}
}

if(!function_exists('pippin_errors')) {
// used for tracking error messages
function pippin_errors(){
static $wp_error; // Will hold global variable safely
return isset($wp_error) ? $wp_error : ($wp_error = new WP_Error(null, null, null));
}
}

第二步:在你需要的地方插入:


[password_form]

这样就可以在建网站时,就可以在网站前台添加密码重置功能表单了。如果不想使用这个代码,可以直接下载WordPress前端用户密码修改模板

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

相关教程

  • 默认情况下Wordpress后台只有文章和页面二种文章类型,如果我们建企业网站,所发布的产品与文章就会合在一起,不方便管理。怎么在wordpress后台菜单添
  • 我们安装WORDPRESS 插件时,插件需要加载用钩子挂载WordPress 自带的 jQuery库而非是通过硬编码的方式来加载,毕竟是为了避免多次加载 jQuery库。但在
  • wordpress默认情况下后台只支持mail函数方式设置发邮件,但是现在大多数虚拟主机是不支持mail函数的,因为会导致垃圾邮件的产生而服务器ip被大量列入
  • WordPress搜索页如果需要显示搜索结果的数量,一般是使用WordPress自带的函数$found_posts来显示。通常用法是:<?php echo $wp_query->found
  • 我们做网站时,如何将分类栏目里的置顶文章显示在最前面呢?然后再显示新发布的文章。怎么实现在调用最新文章列表中置顶文章靠前显示呢?代码如下:
  • WordPress网站后台上传了图片之后,每个图片都会有ID,我们在建网站时,可以通过图片ID来获取图片的路径。怎么通过图片附件的ID来获取图片的路径呢?
  • wordpress每增加一个分类目录,就会分配一个唯一的ID号。分类目录ID号相当于分类目录的身份证号,在网站制作过程中,我们需要经常使用到ID号。那么如
  • WordPress建好网站之后,往往由于服务器本身漏洞、网站后台使用弱密码登录等原因,造成网站被黑,植入了非正规的垃圾代码。造成网站跳转或者打不开。
  • 有时候,我们想用一个域名,做好几种语言的网站。在互联网领域内,一般说这类网站叫做,多语种网站。  WordPress网站也可以做成多语种的。本地网站
  • 使用WordPress做网站时,往往需要给网站设置伪静态规则。WordPress网站在不同服务器环境下的伪静态规则是不一样的。下面分享一下WordPress网站在Nginx