wordpress前台会员注册功能表单调用

博客吧目前在制作一个会员型的wordpress淘宝客主题,目前现在的带会员功能的wordpress淘客模板的会员注册、会员登陆功能都在前台,既然大家都在前台实现了注册登陆的功能,博客吧总不会还让访客绕几十圈到后台注册登陆吧!?本着能拿则拿来主义,先是百度搜索是否有实现wordpess前台注册功能的代码公布,最终得到露兜博客(好博客,多多学习)的相关代码。

实现前台注册操作步骤:

  • 复制当前主题目录下的page.php文件并命名为register.php,在第一行<?php后添加:
    1
    2
    3
    
    /*
    Template Name:会员注册
    */

    如果有其它注释,先删除

  • 紧接着在*/后添加以下函数代码:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    
    if( !empty($_POST['reg']) ) {
      $error = '';
      $sanitized_user_login = sanitize_user( $_POST['user_login'] );
      $user_email = apply_filters( 'user_registration_email', $_POST['user_email'] );
     
      // Check the username
      if ( $sanitized_user_login == '' ) {
        $error .= '<strong>错误</strong>:请输入用户名。<br />';
      } elseif ( ! validate_username( $user_login ) ) {
        $error .= '<strong>错误</strong>:此用户名包含无效字符,请输入有效的用户名<br />。';
        $sanitized_user_login = '';
      } elseif ( username_exists( $sanitized_user_login ) ) {
        $error .= '<strong>错误</strong>:该用户名已被注册,请再选择一个。<br />';
      }
     
      // Check the e-mail address
      if ( $user_email == '' ) {
        $error .= '<strong>错误</strong>:请填写电子邮件地址。<br />';
      } elseif ( ! is_email( $user_email ) ) {
        $error .= '<strong>错误</strong>:电子邮件地址不正确。!<br />';
        $user_email = '';
      } elseif ( email_exists( $user_email ) ) {
        $error .= '<strong>错误</strong>:该电子邮件地址已经被注册,请换一个。<br />';
      }
     
      // Check the password
      if(strlen($_POST['user_pass']) < 6)
        $error .= '<strong>错误</strong>:密码长度至少6位!<br />';
      elseif($_POST['user_pass'] != $_POST['user_pass2'])
        $error .= '<strong>错误</strong>:两次输入的密码必须一致!<br />';
     
        if($error == '') {
        $user_id = wp_create_user( $sanitized_user_login, $_POST['user_pass'], $user_email );
     
        if ( ! $user_id ) {
          $error .= sprintf( '<strong>错误</strong>:无法完成您的注册请求... 请联系<a href=\"mailto:%s\">管理员</a>!<br />', get_option( 'admin_email' ) );
        }
        else if (!is_user_logged_in()) {
          $user = get_userdatabylogin($sanitized_user_login);
          $user_id = $user->ID;
     
          // 自动登录
          wp_set_current_user($user_id, $user_login);
          wp_set_auth_cookie($user_id);
          do_action('wp_login', $user_login);
        }
      }
    }
  • 在register.php文件中找到<?php the_content();?>,在其下面添加以下代码:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    
    <?php 
    	if(!empty($error)) {
    		echo '<p class="error">'.$error.'</p>';
    	}
    	if (!is_user_logged_in()) { ?>
    		<form name="registerform" method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>" class="register">
    		<p>
    			<label for="user_login">用户名:</label>
    			<input type="text" name="user_login" id="user_login" class="input" value="<?php if(!empty($sanitized_user_login)) echo $sanitized_user_login; ?>" size="20" /><em>只允许用英文字母、数字和下划线</em>
    		</p>
     
    		<p>
    			<label for="user_email">电子邮件:</label>
    			<input type="text" name="user_email" id="user_email" class="input" value="<?php if(!empty($user_email)) echo $user_email; ?>" size="25" /><em>请输入正确的邮箱地址,接收激活邮件</em>
    		</p>
     
    		<p>
    			<label for="user_pwd1">密码:</label>
    			<input id="user_pwd1" class="input" type="password" tabindex="21" size="25" value="" name="user_pass" /><em>(至少6位)</em>
    		</p>
     
    		<p>
    			<label for="user_pwd2">重复密码:</label>
    			<input id="user_pwd2" class="input" type="password" tabindex="21" size="25" value="" name="user_pass2" />	
    		</p>
     
    		<p class="submit">
    			<input type="hidden" name="reg" value="ok" />
    			<input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="注册" />
    		</p>
    		</form>
    	<?php } else {
    		echo '<p class="error">您已注册成功,并已登录!</p>';
    } ?>
  • 进入后台——页面——新建页面,标题自定义,在右侧选择模板“前台注册”,发布页面即可。为了方便注册用户以后登陆,可以再添加前台登陆表单,实现方法请看
    http://www.boke8.net/wordpress-login-form-of-front.html

提醒:以上代码的添加,会员注册成功后会自动登陆,如果不想用户自动登陆,可找到以下代码:

1
2
3
4
5
6
7
$user = get_userdatabylogin($sanitized_user_login);
      $user_id = $user->ID;
 
      // 自动登录
      wp_set_current_user($user_id, $user_login);
      wp_set_auth_cookie($user_id);
      do_action('wp_login', $user_login);

替换为:(URL改为自己的)

1
wp_safe_redirect( 'http://www.boke8.net/' );

提示:然后可以使用CSS对注册表单进行美化,博客吧不提供CSS样式美化代码,可自主设计。

代码摘自:露兜博客

发表留言