wordpress默认用户注册时,只能填写用户名和电子邮箱,点击提交后密码由系统产生并通过邮件发给用户,用户用随机密码登陆后要更改密码。这个过程对用户不是十分友好,如果主机不支持mail函数的话,还要进行一些必要的修改。今天给大家介绍一个超级简单的方法,让用户注册时可以自己填写密码。
今天介绍两个方法,一是利用代码实现,二是利用插件实现。
效果如图
代码实现步骤
在主题的functions.php中加入下列代码。
1、通过register_form action向注册表单添加密码、重复密码和防机器人的验证输入框,防止机器人注册的方法是要求用户填写要注册的网站的名称,这个方法很棒,比验证码方便的多。
2. 检查用户的输入,两次输入的密码是否一致,是否正确填写网站名称
// Check the form for errorsadd_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', "ERROR: Passwords must match" ); } if ( strlen( $_POST['password'] ) < 8 ) { $errors->add( 'password_too_short', "ERROR: Passwords must be at least eight characters long" ); } if ( $_POST['are_you_human'] !== get_bloginfo( 'name' ) ) { $errors->add( 'not_human', "ERROR: 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 registrationadd_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;}
如果不爱折腾也可以直接装插件版。
点击插件下载
还没有评论,快来说点什么吧~