Añadir confirmación de contraseña en WooCommerce

    En caso de permitir que el usuario se registre y establezca su contraseña, es recomendable que la repita.

    <?php
    /* 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' );
    
    /* Validar las contraseñas y definir el mensaje de error */
    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 contraseñas no coinciden.', 'woocommerce' ) );
    	}
    	return $reg_errors;
    }
    add_filter('woocommerce_registration_errors', 'register_password_validation', 10,3);	

    Y si quieres que aparezca cuando se registran en la página de Finalizar Compra:

    <?php
    /* 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 contraseñas no coinciden.', 'woocommerce' ), 'error' ); 
    		}
    	}
    }
    add_action( 'woocommerce_after_checkout_validation', 'wc_checkout_password_validation', 10, 2 );