[建站相关] wordpress教程丨WordPress用户注册自己填写密码 附带插件

[复制链接]
阿喜网络 发表于 2018-11-2 10:22:43 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

马上注册阿喜资源网,结交更多好友,享用更多功能

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

                               
登录/注册后可看大图


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


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

3. 存储用户输入的密码,如果用户没有填写密码,什么也不做,让WordPress自动生成密码。
  1. // Storing WordPress user-selected password into database on registration

  2. add_action( 'user_register', 'ts_register_extra_fields', 100 );
  3. function ts_register_extra_fields( $user_id ){
  4.     $userdata = array();

  5.     $userdata['ID'] = $user_id;
  6.     if ( $_POST['password'] !== '' ) {
  7.         $userdata['user_pass'] = $_POST['password'];
  8.     }
  9.     $new_user_id = wp_update_user( $userdata );
  10. }
复制代码

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

  2. add_filter( 'gettext', 'ts_edit_password_email_text' );
  3. function ts_edit_password_email_text ( $text ) {
  4.     if ( $text == 'A password will be e-mailed to you.' ) {
  5.         $text = 'If you leave password fields empty one will be generated for you. Password must be at least eight characters long.';
  6.     }
  7.     return $text;
  8. }
复制代码

懒得折腾的可以直接下载插件解决
插件下载地址附带在下面:



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 最佳新人

    注册账号后积极发帖的会员
  • 活跃会员

    经常参与各类话题的讨论,发帖内容较有主见
  • 热心会员

    经常帮助其他会员答疑
  • 推广达人

    积极宣传本站,为本站带来更多注册会员
  • 宣传达人

    积极宣传本站,为本站带来更多的用户访问量
  • 突出贡献

    长期对论坛的繁荣而不断努力,或多次提出建设性意见
  • 优秀版主

    活跃且尽责职守的版主
  • 荣誉管理

    曾经为论坛做出突出贡献目前已离职的版主
  • 论坛元老

    为论坛做出突出贡献的会员

关注0

粉丝0

帖子283

发布主题
阿喜资源网-专注资源分享
全国免费热线电话

Q2246039056

周一至周日9:00-23:00

反馈建议

byaxi@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by 阿喜网络 © 2018-2019( 滇ICP备18004245号-1 )