WordPress用户注册自己填写密码

wordpress默认用户注册时,只能填写用户名和电子邮箱,点击提交后密码由系统产生并通过邮件发给用户,用户用随机密码登陆后要更改密码。这个过程对用户不是十分友好,如果主机不支持mail函数的话,还要进行一些必要的修改。今天给大家介绍一个超级简单的方法,让用户注册时可以自己填写密码。
今天介绍两个方法,一是利用代码实现,二是利用插件实现。
效果如图
WordPress用户注册自己填写密码-米酷主题

代码实现步骤

在主题的functions.php中加入下列代码。
1、通过register_form action向注册表单添加密码、重复密码和防机器人的验证输入框,防止机器人注册的方法是要求用户填写要注册的网站的名称,这个方法很棒,比验证码方便的多。

<?php
// Add Password, Repeat Password and Are You Human fields to WordPress registration form
add_action( 'register_form', 'ts_show_extra_register_fields' );
function ts_show_extra_register_fields(){
?>
    <p>
    <label for="password">Password<br/>
    <input id="password" class="input" type="password" tabindex="30" size="25" value="" name="password" />
    </label>
    </p>
    <p>
    <label for="repeat_password">Repeat password<br/>
    <input id="repeat_password" class="input" type="password" tabindex="40" size="25" value="" name="repeat_password" />
    </label>
    </p>
    <p>
    <label for="are_you_human" style="font-size:11px">Sorry, but we must check if you are human. What is the name of website you are registering for?<br/>
    <input id="are_you_human" class="input" type="text" tabindex="40" size="25" value="" name="are_you_human" />
    </label>
    </p>
<?php
}

2. 检查用户的输入,两次输入的密码是否一致,是否正确填写网站名称

// Check the form for errors
add_action( 'register_post', 'ts_check_extra_register_fields', 10, 3 );
function ts_check_extra_register_fields($login, $email, $errors) {
    if ( $_POST['password'] !== $_POST['repeat_password'] ) {
        $errors->add( 'passwords_not_matched', "<strong>ERROR</strong>: Passwords must match" );
    }
    if ( strlen( $_POST['password'] ) < 8 ) {
        $errors->add( 'password_too_short', "<strong>ERROR</strong>: Passwords must be at least eight characters long" );
    }
    if ( $_POST['are_you_human'] !== get_bloginfo( 'name' ) ) {
        $errors->add( 'not_human', "<strong>ERROR</strong>: Your name is Bot? James Bot? Check bellow the form, there's a Back to [sitename] link." );
    }
}

3. 存储用户输入的密码,如果用户没有填写密码,什么也不做,让WordPress自动生成密码。

// Storing WordPress user-selected password into database on registration

add_action( 'user_register', 'ts_register_extra_fields', 100 );
function ts_register_extra_fields( $user_id ){
    $userdata = array();
 
    $userdata['ID'] = $user_id;
    if ( $_POST['password'] !== '' ) {
        $userdata['user_pass'] = $_POST['password'];
    }
    $new_user_id = wp_update_user( $userdata );
}

4. 最后就要处理那句不协调的“A password will be e-mailed to you”,通过gettext filter处理一下即可。

// Editing WordPress registration confirmation message
 
add_filter( 'gettext', 'ts_edit_password_email_text' );
function ts_edit_password_email_text ( $text ) {
    if ( $text == 'A password will be e-mailed to you.' ) {
        $text = 'If you leave password fields empty one will be generated for you. Password must be at least eight characters long.';
    }
    return $text;
}

如果不爱折腾也可以直接装插件版。

插件下载

免责声明:
1. 本站所有资源来源于网络,仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请自负。
2. 如果您喜欢该源码,请支持购买正版,得到更好的正版服务。
3. 如果你有好源码或者教程,可以联系站长投稿,分享有金币奖励和额的外收入!
4. 本站提供的非本站原创资源都不包含技术服务请大家谅解!
5. 如有链接无法下载或失效,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站无法保证所有资源的准确性、安全性和完整性!
8. 如本站源码有侵权问题,请联系站长!