Soporte » Plugins y Hacks » WooCommerce » Confirmar contraseña WooCommerce

  • Resuelto Alezx6r

    (@alezx6r)


    Hola me llamó Alejandro, estoy realizando una página web en Local para practicar y aprender antes de subirla a un host de pago. He instalado Woocomerce configurado ciertas cosas siguiendo tutoriales y he creado un child theme para los cambios, de momento va bien. Pero hay un problema que no consigo resolver. La cosa es que me gustaría modificar la página de registro poniendo un espacio para la confirmación de contraseña. Lo he intentado siguiendo algunos tutoriales modificando el archivo functions.php y el form-login.php, combinando códigos pero mis conocimientos de codigo son muy limitados. Pienso que no tiene que ser algo difícil. Me gustaría realizar el cambio sin usar plugins.
    Si alguien me pudiera echar una mano diciéndome la línea de código correcto y donde debo colocarla se lo agradecería mucho.
    Espero sus respuestas.
    Gracias.

Viendo 1 respuesta (de un total de 1)
  • Moderador Jose Luis

    (@jose64)

    Hola

    Puedes modificar el archivo form-login.php (en tu tema hijo) y añadir el segundo campo contraseña y la verificación, pero cada vez que cambies de tema tendrás que volver a hacer la modificación. Si quieres hacerlo usando código personalizado añade este código al archivo functions.php de tu tema hijo o a un plugin de personalizaciones como Code Snippets:

    
    /*
    ** Crea el campo de validación de contraseña en la página de registro
    */
    
    function wc_register_form_password_validation() {
        if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) {
    	?>
    	<p class="form-row form-row-wide">
    		<label for="reg_password2"><?php _e( 'Repite la contraseña', 'woocommerce' ); ?> <span class="required">*</span></label>
    		<input class="woocommerce-Input woocommerce-Input--text input-text" type="password" class="input-text" name="password2" id="reg_password2" autocomplete="current-password" />
    	</p>
    	<?php
        }
    }
    add_action( 'woocommerce_register_form', 'wc_register_form_password_validation' );
    
    /*
    ** Valida las contraseñas y define el mensaje de error de validación en la página de registro
    */
    
    function register_password_validation($reg_errors, $sanitized_user_login, $user_email) {
    	global $woocommerce;
    	extract( $_POST );
    	if ( strcmp( $password, $password2 ) !== 0 ) {
    		return new WP_Error( 'registration-error', __( 'Las dos contraseñas no coinciden.', 'woocommerce' ) );
    	}
    	return $reg_errors;
    }
    add_filter('woocommerce_registration_errors', 'register_password_validation', 10,3);
    

    La primera parte verifica que la opción de generar la contraseña automáticamente no esté activada en la configuración de WooCommerce, si no está activada crea el campo para verificar la contraseña, la segunda compara los dos campos y si no coinciden exactamente genera el mensaje de error.

    Si quieres permitir que el usuario pueda crear su cuenta al finalizar la compra debes añadir otro fragmento de código:

    
    /*
    * Crea el campo de validación de contraseña en la página finalizar compra
    */
    
    function wc_checkout_confirm_password_validation( $checkout ) {
        if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) {
    
            $fields = $checkout->get_checkout_fields();
    
            $fields['account']['account_confirm_password'] = array(
                'type'              => 'password',
                'label'             => __( 'Repite la contraseña', 'woocommerce' ),
                'required'          => true,
                'placeholder'       => _x( 'Contraseña', 'placeholder', 'woocommerce' )
            );
    
            $checkout->__set( 'checkout_fields', $fields );
        }
    }
    add_action( 'woocommerce_checkout_init', 'wc_checkout_confirm_password_validation', 10, 1 );
    
    /*
    * Define el mensaje de error de validación y valida la contraseña en la página de finalización de compra
    */
    
    function wc_checkout_password_validation( $posted ) {
        $checkout = WC()->checkout;
        if ( ! is_user_logged_in() && ( $checkout->must_create_account || ! empty( $posted['createaccount'] ) ) ) {
            if ( strcmp( $posted['account_password'], $posted['account_confirm_password'] ) !== 0 ) {
                wc_add_notice( __( 'Las dos contraseñas no coinciden.', 'woocommerce' ), 'error' ); 
            }
        }
    }
    add_action( 'woocommerce_after_checkout_validation', 'wc_checkout_password_validation', 10, 2 );
    

    Recuerda cerrar el debate marcándolo como resuelto cuando así lo consideres, de esta forma nos ayudas a mantener el foro al día

Viendo 1 respuesta (de un total de 1)
  • El debate ‘Confirmar contraseña WooCommerce’ está cerrado a nuevas respuestas.