Cómo agregar la verificación de correo electrónico de registro de WooCommerce

Publicado: 2021-05-24

Agregar verificación de correo electrónico de registro de WooCommerce ¿Desea agregar una verificación de correo electrónico de registro de WooCommerce personalizada? Siga leyendo, ya que esta publicación le proporcionará una solución simple.

No es un proceso complicado agregar la verificación de correo electrónico de registro de WooCommerce. Sin embargo, es posible que necesite algunas habilidades básicas de codificación para lograrlo. Sí, puede usar un complemento, pero pueden terminar inflando su sitio. Esta es también una forma segura de personalizar.

También recomendamos crear un tema hijo. Esto asegurará que sus cambios no se pierdan durante una actualización.

Agregar verificación de correo electrónico de registro de WooCommerce

Al final de esta publicación, podrá agregar la verificación de correo electrónico de registro de WooCommerce. Creamos un fragmento de código personalizado para lograr esto. Lo guiaremos a través de todos los pasos que debe seguir para que sea más fácil para los principiantes implementar esta solución.

Entremos directamente en ello.

Pasos para agregar la verificación de correo electrónico de registro de WooCommerce

Antes de continuar, recuerda hacer una copia de seguridad de tu sitio. Esto le ayudará a volver a la versión anterior si se produce un problema.

Estos son los sencillos pasos que debe seguir:

  1. Inicie sesión en su sitio de WordPress y acceda al Panel como usuario administrador.
  2. En el menú del panel, haga clic en Menú de apariencia > Menú del editor de temas . Cuando se abra la página del Editor de temas, busque el archivo de funciones del tema donde agregaremos la función que agregará la funcionalidad del Número GTIN en los Productos en WooCommerce.
  3. Agregue el siguiente código al archivo php :
// this is just to prevent the user log in automatically after register

function wc_registration_redirect( $redirect_to ) {

 wp_logout();

 wp_redirect( '/sign-in/?q=');

 exit;

}

// when user login, we will check whether this guy email is verify

function wp_authenticate_user( $userdata ) {

 $isActivated = get_user_meta($userdata->ID, 'is_activated', true);

if ( !$isActivated ) {

 $userdata = new WP_Error(
'inkfool_confirmation_error',

__( '<strong>ERROR:</strong> Your account has to be activated before you can login. You can resend by clicking <a href="/sign-in/?u='.$userdata->ID.'">here</a>', 'inkfool' )

 );

 }

&return $userdata;

}

// when a user register we need to send them an email to verify their account

function my_user_register($user_id) {

 // get user data

$user_info = get_userdata($user_id);

 // create md5 code to verify later
$code = md5(time());

 // make it into a code to send it to user via email

 $string = array('id'=>$user_id, 'code'=>$code);

// create the activation code and activation status

update_user_meta($user_id, 'is_activated', 0);

 update_user_meta($user_id, 'activationcode', $code);
; // create the url

 $url = get_site_url(). '/sign-in/?p=' .base64_encode( serialize($string));

 // basically we will edit here to make this nicer

 $html = 'Please click the following links <br/><br/> <a href="'.$url.'">'.$url.'</a>';

// send an email out to user

 wc_mail($user_info->user_email, __('Please activate your account'), $html);

}

// we need this to handle all the getty hacks i made

function my_init(){

 // check whether we get the activation message

 if(isset($_GET['p'])){

 $data = unserialize(base64_decode($_GET['p']));

 $code = get_user_meta($data['id'], 'activationcode', true);

 // check whether the code given is the same as ours

if($code == $data['code']){
 // update the db on the activation process

update_user_meta($data['id'], 'is_activated', 1);

wc_add_notice( __( '<strong>Success:</strong> Your account has been activated! ', 'inkfool' )  );

}else{
 wc_add_notice( __( '<strong>Error:</strong> Activation fails, please contact our administrator. ', 'inkfool' )  );
}

 }

if(isset($_GET['q'])){

wc_add_notice( __( '<strong>Error:</strong> Your account has to be activated before you can login. Please check your email.', 'inkfool' ) );

 }

if(isset($_GET['u'])){

 my_user_register($_GET['u']);

wc_add_notice( __( '<strong>Succes:</strong> Your activation email has been resend. Please check your email.', 'inkfool' ) );

 }

}

// hooks handler

add_action( 'init', 'my_init' );

add_filter('woocommerce_registration_redirect', 'wc_registration_redirect');

add_filter('wp_authenticate_user', 'wp_authenticate_user',10,2);

add_action('user_register', 'my_user_register',10,2);

Conclusión

A estas alturas, los clientes de su tienda deben verificar sus correos electrónicos después de registrarse para poder comprar productos en su tienda. Este código ha sido probado y funciona bien.

Si tiene problemas para implementar esta solución, debe dejar que un profesional inserte el código por usted o usar un complemento.

Esperamos que esta solución lo haya ayudado a agregar la verificación de correo electrónico de registro de WooCommerce.

Artículos similares

  1. Cómo crear páginas separadas de inicio de sesión y registro en WooCommerce