Makes wc_create_new_customer() pluggable
And fixed some coding standards. Closes #10683
This commit is contained in:
parent
50c9e302d7
commit
fce5584185
|
@ -32,89 +32,89 @@ function wc_disable_admin_bar( $show_admin_bar ) {
|
|||
}
|
||||
add_filter( 'show_admin_bar', 'wc_disable_admin_bar', 10, 1 );
|
||||
|
||||
if ( ! function_exists( 'wc_create_new_customer' ) ) {
|
||||
|
||||
/**
|
||||
* Create a new customer.
|
||||
*
|
||||
* @param string $email
|
||||
* @param string $username
|
||||
* @param string $password
|
||||
* @return int|WP_Error on failure, Int (user ID) on success
|
||||
*/
|
||||
function wc_create_new_customer( $email, $username = '', $password = '' ) {
|
||||
/**
|
||||
* Create a new customer.
|
||||
*
|
||||
* @param string $email Customer email.
|
||||
* @param string $username Customer username.
|
||||
* @param string $password Customer password.
|
||||
* @return int|WP_Error Returns WP_Error on failure, Int (user ID) on success.
|
||||
*/
|
||||
function wc_create_new_customer( $email, $username = '', $password = '' ) {
|
||||
|
||||
// Check the e-mail address
|
||||
if ( empty( $email ) || ! is_email( $email ) ) {
|
||||
return new WP_Error( 'registration-error-invalid-email', __( 'Please provide a valid email address.', 'woocommerce' ) );
|
||||
}
|
||||
|
||||
if ( email_exists( $email ) ) {
|
||||
return new WP_Error( 'registration-error-email-exists', __( 'An account is already registered with your email address. Please login.', 'woocommerce' ) );
|
||||
}
|
||||
|
||||
// Handle username creation
|
||||
if ( 'no' === get_option( 'woocommerce_registration_generate_username' ) || ! empty( $username ) ) {
|
||||
|
||||
$username = sanitize_user( $username );
|
||||
|
||||
if ( empty( $username ) || ! validate_username( $username ) ) {
|
||||
return new WP_Error( 'registration-error-invalid-username', __( 'Please enter a valid account username.', 'woocommerce' ) );
|
||||
// Check the email address.
|
||||
if ( empty( $email ) || ! is_email( $email ) ) {
|
||||
return new WP_Error( 'registration-error-invalid-email', __( 'Please provide a valid email address.', 'woocommerce' ) );
|
||||
}
|
||||
|
||||
if ( username_exists( $username ) )
|
||||
return new WP_Error( 'registration-error-username-exists', __( 'An account is already registered with that username. Please choose another.', 'woocommerce' ) );
|
||||
} else {
|
||||
|
||||
$username = sanitize_user( current( explode( '@', $email ) ), true );
|
||||
|
||||
// Ensure username is unique
|
||||
$append = 1;
|
||||
$o_username = $username;
|
||||
|
||||
while ( username_exists( $username ) ) {
|
||||
$username = $o_username . $append;
|
||||
$append ++;
|
||||
if ( email_exists( $email ) ) {
|
||||
return new WP_Error( 'registration-error-email-exists', __( 'An account is already registered with your email address. Please login.', 'woocommerce' ) );
|
||||
}
|
||||
|
||||
// Handle username creation.
|
||||
if ( 'no' === get_option( 'woocommerce_registration_generate_username' ) || ! empty( $username ) ) {
|
||||
$username = sanitize_user( $username );
|
||||
|
||||
if ( empty( $username ) || ! validate_username( $username ) ) {
|
||||
return new WP_Error( 'registration-error-invalid-username', __( 'Please enter a valid account username.', 'woocommerce' ) );
|
||||
}
|
||||
|
||||
if ( username_exists( $username ) ) {
|
||||
return new WP_Error( 'registration-error-username-exists', __( 'An account is already registered with that username. Please choose another.', 'woocommerce' ) );
|
||||
}
|
||||
} else {
|
||||
$username = sanitize_user( current( explode( '@', $email ) ), true );
|
||||
|
||||
// Ensure username is unique.
|
||||
$append = 1;
|
||||
$o_username = $username;
|
||||
|
||||
while ( username_exists( $username ) ) {
|
||||
$username = $o_username . $append;
|
||||
$append++;
|
||||
}
|
||||
}
|
||||
|
||||
// Handle password creation.
|
||||
if ( 'yes' === get_option( 'woocommerce_registration_generate_password' ) && empty( $password ) ) {
|
||||
$password = wp_generate_password();
|
||||
$password_generated = true;
|
||||
} elseif ( empty( $password ) ) {
|
||||
return new WP_Error( 'registration-error-missing-password', __( 'Please enter an account password.', 'woocommerce' ) );
|
||||
} else {
|
||||
$password_generated = false;
|
||||
}
|
||||
|
||||
// Use WP_Error to handle registration errors.
|
||||
$errors = new WP_Error();
|
||||
|
||||
do_action( 'woocommerce_register_post', $username, $email, $errors );
|
||||
|
||||
$errors = apply_filters( 'woocommerce_registration_errors', $errors, $username, $email );
|
||||
|
||||
if ( $errors->get_error_code() ) {
|
||||
return $errors;
|
||||
}
|
||||
|
||||
$new_customer_data = apply_filters( 'woocommerce_new_customer_data', array(
|
||||
'user_login' => $username,
|
||||
'user_pass' => $password,
|
||||
'user_email' => $email,
|
||||
'role' => 'customer',
|
||||
) );
|
||||
|
||||
$customer_id = wp_insert_user( $new_customer_data );
|
||||
|
||||
if ( is_wp_error( $customer_id ) ) {
|
||||
return new WP_Error( 'registration-error', '<strong>' . __( 'ERROR', 'woocommerce' ) . '</strong>: ' . __( 'Couldn’t register you… please contact us if you continue to have problems.', 'woocommerce' ) );
|
||||
}
|
||||
|
||||
do_action( 'woocommerce_created_customer', $customer_id, $new_customer_data, $password_generated );
|
||||
|
||||
return $customer_id;
|
||||
}
|
||||
|
||||
// Handle password creation
|
||||
if ( 'yes' === get_option( 'woocommerce_registration_generate_password' ) && empty( $password ) ) {
|
||||
$password = wp_generate_password();
|
||||
$password_generated = true;
|
||||
|
||||
} elseif ( empty( $password ) ) {
|
||||
return new WP_Error( 'registration-error-missing-password', __( 'Please enter an account password.', 'woocommerce' ) );
|
||||
|
||||
} else {
|
||||
$password_generated = false;
|
||||
}
|
||||
|
||||
// WP Validation
|
||||
$validation_errors = new WP_Error();
|
||||
|
||||
do_action( 'woocommerce_register_post', $username, $email, $validation_errors );
|
||||
|
||||
$validation_errors = apply_filters( 'woocommerce_registration_errors', $validation_errors, $username, $email );
|
||||
|
||||
if ( $validation_errors->get_error_code() )
|
||||
return $validation_errors;
|
||||
|
||||
$new_customer_data = apply_filters( 'woocommerce_new_customer_data', array(
|
||||
'user_login' => $username,
|
||||
'user_pass' => $password,
|
||||
'user_email' => $email,
|
||||
'role' => 'customer'
|
||||
) );
|
||||
|
||||
$customer_id = wp_insert_user( $new_customer_data );
|
||||
|
||||
if ( is_wp_error( $customer_id ) ) {
|
||||
return new WP_Error( 'registration-error', '<strong>' . __( 'ERROR', 'woocommerce' ) . '</strong>: ' . __( 'Couldn’t register you… please contact us if you continue to have problems.', 'woocommerce' ) );
|
||||
}
|
||||
|
||||
do_action( 'woocommerce_created_customer', $customer_id, $new_customer_data, $password_generated );
|
||||
|
||||
return $customer_id;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue