downloadtaky

Custom Wordpress registration

Jun 7th, 2012
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.58 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment