Un utente ha chiesto informazioni su WooCommerce di Wordpress

Pagina di controllo della password di conferma non valida

Un utente ha chiesto 👇

Salve, ho abilitato l’utente a registrarsi sulla pagina di pagamento ma ricevo ancora questo errore Password di conferma non valida anche se imposto una password automatica (quindi non c’è alcun campo password) e se imposto del codice nel functions.php, ho provato seo, da un altro argomento su questo problema.

Qualche soluzione?

PS: non riesco a passare a un tema predefinito e comporre tutti i plugin.

Grazie!

(@yazdaniwp)

11 mesi, 1 settimana fa

Ciao

hai utilizzato un nome di campo predefinito per confermare una password nota password2

Cambia in ywp_password2 su tutto il codice utilizzato per la certificazione;

Collaudo e lavoro;

In bocca al lupo

Lanciatore di thread

(@carminemarsocci)

11 mesi, 1 settimana fa

Mille grazie.

Provo e te lo dico

Lanciatore di thread

(@carminemarsocci)

11 mesi, 1 settimana fa

Non funziona
Ho aggiornato il codice in questo modo

// ----- validate password match on the registration page
function registration_errors_validation($reg_errors, $sanitized_user_login, $user_email) {
	global $woocommerce;
	extract( $_POST );
	if ( strcmp( $password, $ywp_password2 ) !== 0 ) {
		return new WP_Error( 'registration-error', __( 'Passwords do not match.', 'woocommerce' ) );
	}
	return $reg_errors;
}
add_filter('woocommerce_registration_errors', 'registration_errors_validation', 10,3);

// ----- add a confirm password fields match on the registration page
function wc_register_form_password_repeat() {
	?>
	<p class="form-row form-row-wide">
		<label for="reg_password2"><?php _e( 'Password Repeat', 'woocommerce' ); ?> <span class="required">*</span></label>
		<input type="password" class="input-text" name="ywp_password2" id="reg_password2" value="<?php if ( ! empty( $_POST['ywp_password2'] ) ) echo esc_attr( $_POST['ywp_password2'] ); ?>" />
	</p>
	<?php
}
add_action( 'woocommerce_register_form', 'wc_register_form_password_repeat' );

// ----- Validate confirm password field match to the checkout page
function lit_woocommerce_confirm_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( __( 'Passwords do not match.', 'woocommerce' ), 'error' ); 
        }
    }
}
add_action( 'woocommerce_after_checkout_validation', 'lit_woocommerce_confirm_password_validation', 10, 2 );

// ----- Add a confirm password field to the checkout page
function lit_woocommerce_confirm_password_checkout( $checkout ) {
    if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) {

        $fields = $checkout->get_checkout_fields();

        $fields['account']['account_confirm_password'] = array(
            'type'              => 'password',
            'label'             => __( 'Confirm password', 'woocommerce' ),
            'required'          => true,
            'placeholder'       => _x( 'Confirm Password', 'placeholder', 'woocommerce' )
        );

        $checkout->__set( 'checkout_fields', $fields );
    }
}
add_action( 'woocommerce_checkout_init', 'lit_woocommerce_confirm_password_checkout', 10, 1 );

Prima di tutto ho provato a sostituire solo l’input dopo anche in if () sopra ma non ricevo sempre lo stesso errore

Questa risposta è stata modificata 11 mesi, una settimana fa da.

(@yazdaniwp)

11 mesi, 1 settimana fa

Ciao
hai ragione; Scusa, ho fatto un test nel modulo di registrazione.

Puoi usare questo snippet:


// ----- validate password match on the registration page
add_filter( 'woocommerce_registration_errors', 'registration_errors_validation', 10, 3 );
function registration_errors_validation( $reg_errors, $sanitized_user_login, $user_email ) {
	if ( is_checkout() )
		return $reg_errors;

	global $woocommerce;

	extract( $_POST );

	if (  $password!= $ywp_password2  )
		return new WP_Error( 'registration-error', __( 'Passwords not match.', 'woocommerce' ) );

	return $reg_errors;
}

// ----- add a confirm password fields match on the registration page
add_action( 'woocommerce_register_form', 'wc_register_form_password_repeat' );
function wc_register_form_password_repeat() {
	?>
	<p class="form-row form-row-wide">
		<label for="reg_ywp_password2"><?php _e( 'Password Repeat', 'woocommerce' ); ?> <span class="required">*</span></label>
		<input type="password" class="input-text" name="ywp_password2" id="ywp_password2" value="<?php if ( ! empty( $_POST['ywp_password2'] ) ) echo $_POST['ywp_password2'] ; ?>" />
	</p>
	<?php
}

// ----- Validate confirm password field match to the checkout page
add_action( 'woocommerce_after_checkout_validation', 'lit_woocommerce_confirm_password_validation', 10 );
function lit_woocommerce_confirm_password_validation( $posted ) {

    $checkout = WC()->checkout;

    if ( ! is_user_logged_in() && $checkout->must_create_account )
        if ( $posted['account_password']!=$posted['ywp_password2'] )
			wc_add_notice( 'error', 'error' ); 
}

// ----- Add a confirm password field to the checkout page
add_action( 'woocommerce_checkout_init', 'lit_woocommerce_confirm_password_checkout', 10, 1 );
function lit_woocommerce_confirm_password_checkout( $checkout ) {
    if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) {

        $fields = $checkout->get_checkout_fields();

        $fields['account']['ywp_password2'] = array(
            'type'              => 'password',
            'label'             => __( 'Confirm password', 'woocommerce' ),
            'required'          => true,
            'placeholder'       => _x( 'Confirm Password', 'placeholder', 'woocommerce' )
        );

        $checkout->__set( 'checkout_fields', $fields );
    }
}

Questa risposta è stata modificata 11 mesi, una settimana fa da. Lanciatore di thread

(@carminemarsocci)

11 mesi, 1 settimana fa

Grazie per il tuo tempo, ho provato ma l’errore è ancora qui.

Grazie per davvero

(@yazdaniwp)

11 mesi, 1 settimana fa

Prego

Se copi / incolli il mio intero codice e non funziona, sostituiscilo con questa funzione

// ----- Validate confirm password field match to the checkout page
add_action( 'woocommerce_after_checkout_validation', 'lit_woocommerce_confirm_password_validation', 10 );
function lit_woocommerce_confirm_password_validation( $posted ) {

    $checkout = WC()->checkout;

    if ( ! is_user_logged_in() && $checkout->must_create_account )
        if ( $posted['account_password']!=$posted['ywp_password2'] )
			wc_add_notice( 'error', 'error' ); 
}

con questo:

// ----- Validate confirm password field match to the checkout page
add_action( 'woocommerce_after_checkout_validation', 'lit_woocommerce_confirm_password_validation', 10 );
function lit_woocommerce_confirm_password_validation( $posted ) {

    $checkout = WC()->checkout;
    var_dump( $posted );

    if ( ! is_user_logged_in() && $checkout->must_create_account )
        if ( $posted['account_password']!=$posted['ywp_password2'] )
			wc_add_notice( 'error', 'error' ); 
}

e controlla i valori nella tua console del browser;

Lanciatore di thread

(@carminemarsocci)

11 mesi, 1 settimana fa

No, mi dispiace non funziona e ho anche un campo per la ripetizione della password sopra il modulo di registrazione nella pagina dell’account.

A proposito, posso condividere con te i risultati della console.

Modifica: la cosa strana è nella mia console `[“account_password”]=>
filo (4) “pass”
[“ywp_password2”]=>
filo (4) “passa” `
Chi ha ragione, ma vedo ancora il messaggio di errore "result":"failure","messages":"<ul class="woocommerce-error" role="alert">nttt<li>ntttInvalid confirmation passwordtt</li>nt</ul>n","refresh":false,"reload":false}

Questa risposta è stata modificata 11 mesi, una settimana fa da. Questa risposta è stata modificata 11 mesi, una settimana fa da.

(@yazdaniwp)

11 mesi, 1 settimana fa

Va bene
In base al mio codice dovresti essere avvisato se hai un errore nel modulo di registrazione nella pagina dell’account:
Passwords not match.

e se hai un errore nella pagina di controllo mostra:
error

Messaggio,
Ma il tuo messaggio è un errore Invalid confirmation password

Rivedi i tuoi codici e trova il file Invalid confirmation password riflettere nel tuo tema, file di traduzione e plugin Perché il mio codice funziona perfettamente in locale

In bocca al lupo

Questa risposta è stata modificata 11 mesi, una settimana fa da. Lanciatore di thread

(@carminemarsocci)

11 mesi, 1 settimana fa

Va bene!

Seguirò il tuo consiglio, grazie mille !!

Buona giornata!

(@yazdaniwp)

11 mesi, 1 settimana fa

Molto bene

Prego

Was this helpful?

0 / 0

Lascia un commento 0

Your email address will not be published. Required fields are marked *