/** * Register new users * * @param $post array $_POST data * @param $form_id int Registration builder ID * * @return string */ public static function register_new_user($post, $form_id, $files = '', $redirect = '') { // create an array of acceptable userdata for use by wp_insert_user $valid_userdata = array('reg_username', 'reg_password', 'reg_email', 'reg_website', 'reg_nickname', 'reg_display_name', 'reg_first_name', 'reg_last_name', 'reg_bio'); // get the data for userdata $segregated_userdata = array(); // loop over the $_POST data and create an array of the wp_insert_user userdata foreach ($post as $key => $value) { if ($key == 'reg_submit') { continue; } if (in_array($key, $valid_userdata)) { $segregated_userdata[$key] = esc_attr($value); } } // get the data for use by update_meta $custom_usermeta = array(); // loop over the $_POST data and create an array of the invalid userdata/ custom usermeta foreach ($post as $key => $value) { if ($key == 'reg_submit') { continue; } if (!in_array($key, $valid_userdata)) { $custom_usermeta[$key] = esc_attr($value); } } // get convert the form post data to userdata for use by wp_insert_users $username = isset($segregated_userdata['reg_username']) ? $segregated_userdata['reg_username'] : ''; $password = isset($segregated_userdata['reg_password']) ? $segregated_userdata['reg_password'] : ''; $email = isset($segregated_userdata['reg_email']) ? $segregated_userdata['reg_email'] : ''; $website = isset($segregated_userdata['reg_website']) ? $segregated_userdata['reg_website'] : ''; $nickname = isset($segregated_userdata['reg_nickname']) ? $segregated_userdata['reg_nickname'] : ''; $display_name = isset($segregated_userdata['reg_display_name']) ? $segregated_userdata['reg_display_name'] : ''; $first_name = isset($segregated_userdata['reg_first_name']) ? $segregated_userdata['reg_first_name'] : ''; $last_name = isset($segregated_userdata['reg_last_name']) ? $segregated_userdata['reg_last_name'] : ''; $bio = isset($segregated_userdata['reg_bio']) ? $segregated_userdata['reg_bio'] : ''; // real uer data $real_userdata = array('user_login' => $username, 'user_pass' => $password, 'user_email' => $email, 'user_url' => $website, 'nickname' => $nickname, 'display_name' => $display_name, 'first_name' => $first_name, 'last_name' => $last_name, 'description' => $bio); // filter for the css class of the error message $reg_status_css_class = apply_filters('pp_registration_error_css_class', 'profilepress-reg-status', $form_id); /* start filter Hook */ $reg_errors = new WP_Error(); if (!is_email($real_userdata['user_email'])) { $reg_errors->add('invalid_email', __('Email address is not valid', 'profilepress')); } // call validate reg from function $reg_form_errors = apply_filters('pp_registration_validation', $reg_errors, $form_id); if (is_wp_error($reg_form_errors) && $reg_form_errors->get_error_code() != '') { return '<div class="' . $reg_status_css_class . '">' . $reg_form_errors->get_error_message() . '</div>'; } /* End Filter Hook */ //merge real data(for use by wp_insert_user()) and custom profile fields data $user_data = array_merge($real_userdata, $custom_usermeta); /* Start Action Hook */ do_action('pp_before_registration', $form_id, $user_data); /* End Action Hook */ // proceed to registration using wp_insert_user method which return the new user id $register_user = wp_insert_user($real_userdata); // register custom profile field if (!is_wp_error($register_user)) { // if @$register_user is no WP_Error, add the extra user profile field if (is_array($custom_usermeta)) { foreach ($custom_usermeta as $key => $value) { update_user_meta($register_user, $key, esc_attr($value)); } } /* Start Action Hook */ do_action('pp_after_registration', $form_id, $user_data); /* End Action Hook */ // get the "registration successful message" for the registration page $message_on_successful_registration = PROFILEPRESS_sql::get_db_success_registration($form_id); return !empty($message_on_successful_registration) ? $message_on_successful_registration : '<div class="profilepress-reg-status">Registration successful</div>'; } else { return '<div class="' . $reg_status_css_class . '">' . $register_user->get_error_message() . '</div>'; } }