Don't like ads? PRO users don't see any ads ;-)
Guest

Custom Wordpress registration

By: downloadtaky on Jun 7th, 2012  |  syntax: PHP  |  size: 6.58 KB  |  hits: 154  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. <?php
  2.  
  3. // register a new user
  4. function feralf_add_new_member() {
  5.         if (isset( $_POST["feralf_user_login"] ) && wp_verify_nonce($_POST['feralf_register_nonce'], 'feralf-register-nonce')) {
  6.        
  7.                 global $feralf_settings;
  8.        
  9.                 $user_login             = $_POST["feralf_user_login"]; 
  10.                 $user_email             = $_POST["feralf_user_email"];
  11.                 $user_first     = $_POST["feralf_user_first"];
  12.                 $user_last              = $_POST["feralf_user_last"];
  13.                 $user_pass              = $_POST["feralf_user_pass"];
  14.                 $pass_confirm   = $_POST["feralf_user_pass_confirm"];
  15.                 $user_phone             = $_POST["feralf_user_phone"];
  16.                 $user_street            = $_POST["feralf_user_street"];
  17.                 $user_city              = $_POST["feralf_user_city"];
  18.                 $user_postalcode                = $_POST["feralf_user_postalcode"];
  19.                 $user_country           = $_POST["feralf_user_country"];
  20.                 $user_region            = $_POST["feralf_user_region"];
  21.                
  22.                 // this is required for username checks
  23.                 require_once(ABSPATH . WPINC . '/registration.php');
  24.                
  25.                 if(username_exists($user_login)) {
  26.                         // Username already registered
  27.                         feralf_errors()->add('username_unavailable', __('Username already taken', 'feralf'), 'register');
  28.                 }
  29.                 if(!validate_username($user_login)) {
  30.                         // invalid username
  31.                         feralf_errors()->add('username_invalid', __('Invalid username', 'feralf'), 'register');
  32.                 }
  33.                 if($user_login == '') {
  34.                         // empty username
  35.                         feralf_errors()->add('username_empty', __('Enter a username', 'feralf'), 'register');
  36.                 }
  37.                 if(!is_email($user_email)) {
  38.                         //invalid email
  39.                         feralf_errors()->add('email_invalid', __('Invalid email', 'feralf'), 'register');
  40.                 }
  41.                 if(email_exists($user_email)) {
  42.                         //Email address already registered
  43.                         feralf_errors()->add('email_used', __('Email already used', 'feralf'), 'register');
  44.                 }
  45.                 if($user_pass == '') {
  46.                         // passwords do not match
  47.                         feralf_errors()->add('password_empty', __('Enter a password', 'feralf'), 'register');
  48.                 }
  49.                 if($user_pass != $pass_confirm) {
  50.                         // passwords do not match
  51.                         feralf_errors()->add('password_mismatch', __('Passwords don\'t match', 'feralf'), 'register');
  52.                 }
  53.                
  54.                 $errors = feralf_errors()->get_error_messages();
  55.                
  56.                 // only create the user in if there are no errors
  57.                 if(empty($errors)) {
  58.                        
  59.                         $new_user_id = wp_insert_user(array(
  60.                                         'user_login'            => $user_login,
  61.                                         'user_pass'                     => $user_pass,
  62.                                         'user_email'            => $user_email,
  63.                                         'first_name'            => $user_first,
  64.                                         'last_name'                     => $user_last,
  65.                                         'user_registered'       => date('Y-m-d H:i:s'),
  66.                                         'user_phone'            =>      $user_phone,
  67.                                         'user_street'           =>      $user_street,
  68.                                         'user_city'                     =>      $user_city,
  69.                                         'user_postalcode'       =>      $user_postalcode,
  70.                                         'user_country'          =>      $user_country,
  71.                                         'user_region'           =>      $user_region,
  72.                                         'role'                          => 'subscriber'
  73.                                 )
  74.                         );
  75.                         if($new_user_id) {
  76.                                 // send an email to the admin alerting them of the registration
  77.                                 wp_new_user_notification($new_user_id);
  78.                                
  79.                                 // log the new user in
  80.                                 wp_setcookie($user_login, $user_pass, true);
  81.                                 wp_set_current_user($new_user_id, $user_login);
  82.                                 do_action('wp_login', $user_login);
  83.                                
  84.                                 // send the newly created user to the home page after logging them in
  85.                                 wp_redirect(get_permalink($feralf_settings['redirect'])); exit;
  86.                         }
  87.                        
  88.                 }
  89.        
  90.         }
  91. }
  92. add_action('init', 'feralf_add_new_member');
  93.  
  94. // logs a member in after submitting a form
  95. function feralf_login_member() {
  96.                
  97.         if(isset($_POST['feralf_user_login']) && wp_verify_nonce($_POST['feralf_login_nonce'], 'feralf-login-nonce')) {
  98.                                
  99.                 // this returns the user ID and other info from the user name
  100.                 $user = get_userdatabylogin($_POST['feralf_user_login']);
  101.                
  102.                 if(!$user) {
  103.                         // if the user name doesn't exist
  104.                         feralf_errors()->add('empty_username', __('Invalid username', 'feralf'), 'login');
  105.                 }
  106.                
  107.                 if(!isset($_POST['feralf_user_pass']) || $_POST['feralf_user_pass'] == '') {
  108.                         // if no password was entered
  109.                         feralf_errors()->add('empty_password', __('Enter a password', 'feralf'), 'login');
  110.                 }
  111.                                
  112.                 // check the user's login with their password
  113.                 if(!wp_check_password($_POST['feralf_user_pass'], $user->user_pass, $user->ID)) {
  114.                         // if the password is incorrect for the specified user
  115.                         feralf_errors()->add('empty_password', __('Incorrect password', 'feralf'), 'login');
  116.                 }
  117.                
  118.                 // retrieve all error messages
  119.                 $errors = feralf_errors()->get_error_messages();
  120.                
  121.                 // only log the user in if there are no errors
  122.                 if(empty($errors)) {
  123.                        
  124.                         wp_setcookie($_POST['feralf_user_login'], $_POST['feralf_user_pass'], true);
  125.                         wp_set_current_user($user->ID, $_POST['feralf_user_login']);   
  126.                         do_action('wp_login', $_POST['feralf_user_login']);
  127.                        
  128.                         wp_redirect($_POST['refalf_redirect']); exit;
  129.                 }
  130.         }
  131. }
  132. add_action('init', 'feralf_login_member');
  133.  
  134. function feralf_change_password() {
  135.         // reset a users password
  136.         if(isset($_POST['feralf_action']) && $_POST['feralf_action'] == 'change-password') {
  137.                
  138.                 global $user_ID;
  139.                
  140.                 if(!is_user_logged_in())
  141.                         return;
  142.                        
  143.                 if(wp_verify_nonce($_POST['feralf_password_nonce'], 'rcp-password-nonce')) {
  144.                        
  145.                         if($_POST['feralf_user_pass'] == '' || $_POST['feralf_user_pass_confirm'] == '') {
  146.                                 // password(s) field empty
  147.                                 feralf_errors()->add('password_empty', __('Enter a password', 'feralf'), 'password');
  148.                         }
  149.                         if($_POST['feralf_user_pass'] != $_POST['feralf_user_pass_confirm']) {
  150.                                 // passwords do not match
  151.                                 feralf_errors()->add('password_mismatch', __('Passwords don\'t match', 'feralf'), 'password');
  152.                         }
  153.                        
  154.                         // retrieve all error messages, if any
  155.                         $errors = feralf_errors()->get_error_messages();
  156.                        
  157.                         if(empty($errors)) {
  158.                                 // change the password here
  159.                                 $user_data = array(
  160.                                         'ID' => $user_ID,
  161.                                         'user_pass' => $_POST['feralf_user_pass']
  162.                                 );
  163.                                 wp_update_user($user_data);
  164.                                 // send password change email here (if WP doesn't)
  165.                                 wp_redirect(add_query_arg('password-updated', 'true', $_POST['feralf_redirect']));
  166.                                 exit;
  167.                         }
  168.                 }
  169.         }      
  170. }
  171. add_action('init', 'feralf_change_password');
  172.  
  173. // used for tracking error messages
  174. function feralf_errors(){
  175.     static $wp_error; // Will hold global variable safely
  176.     return isset($wp_error) ? $wp_error : ($wp_error = new WP_Error(null, null, null));
  177. }
  178.  
  179. // displays error messages from form submissions
  180. function feralf_show_error_messages($data = '') {
  181.         if($codes = feralf_errors()->get_error_codes()) {
  182.                 echo '<div class="feralf_errors">';
  183.                     // Loop error codes and display errors
  184.                    foreach($codes as $code){
  185.                                 if(feralf_errors()->get_error_data($code) == $data) {
  186.                                 $message = feralf_errors()->get_error_message($code);
  187.                                 echo '<p class="feralf_error"><span>' . $message . '</span></p>';
  188.                                 }
  189.                     }
  190.                 echo '</div>';
  191.         }      
  192. }