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