[Contact Form 7] Funzione personalizzata: ho un problema.

felino

Utente Attivo
12 Dic 2013
940
10
18
Aci Catena (Catania)
Ciao a tutti,
ho creato un step personalizzato per nuovi utenti del mio sito tramite delle funzioni custom e l'utilizzo del plugin Contact Form 7.
1) Quando l'amministratore aggiungere un nuovo account, il sistema crea due user_meta personalizzati:
Codice:
function function_new_user($user_id) { 
   add_user_meta( $user_id, '_new_user', '1' );
   add_user_meta( $user_id, '_user_accept_privacy', '1' );
}
add_action( 'user_register', 'function_new_user');

2) quando l'utente accede per prima volta, viene eseguito un reindirizzamento ad una pagina personalizzata: in questa pagina vi è un modulo con una casella di controllo che l'utente deve selezionare per andare avanti.
Codice:
function function_check_login_redirect($user_login, $user) {
   
   $logincontrol = get_user_meta($user->ID, '_new_user', 'TRUE');
   $acceptPrivacyControl = get_user_meta($user->ID, '_user_accept_privacy', 'TRUE');
   
   //Se entrambi sono TRUE eseguo il redirect
   if ( $logincontrol and  acceptPrivacyControl) {
      wp_redirect( home_url( $path = '/trattamento-dei-dati-personali/' ), 302 ); exit;
   }
}
add_action('wp_login', 'function_check_login_redirect', 10, 2);

3) nell'intestazione supplementare del form ho aggiunto:
Codice:
on_sent_ok: "location = 'http://www.myisite.it';"
e il modulo invia all'amministrazione una e-mail per notificare che l'utente è connesso per la prima volta.

4) Quando l'utente clicca sul pulsante, viene aggiornato il valore dei due user_meta:
Codice:
function wpcf7_redirect_on_submit($contact_form)
{
	$user = wp_get_current_user();
	
	//print_r($contact_form);
	$id_contact_form = $contact_form->id;
	
	if($id_contact_form == 828)
	{	
		//Imposto i due TAG a FALSE
		update_user_meta( $user->ID, '_new_user', '0' );
		update_user_meta( $user->ID, '_user_accept_privacy', '0' );
	}
}	

add_action('wpcf7_mail_sent', 'wpcf7_redirect_on_submit');

Funziona molto bene, ma ho un problema: anche se l'utente si sta loggando per la secondo volta e le successive, il modulo invia all'amministrazione una e-mail come se si trattasse del primo login.

Dove potrebbe essere il problema secondo voi?

Grazie.
 
Risolto grazie alla segnalazione di un utente,
il problema era presente in questo if:
Codice:
if ( $logincontrol and  acceptPrivacyControl) {

manca il $ nel secondo parametro:
Codice:
if ( $logincontrol and  $acceptPrivacyControl) {

Una svista.
 

Discussioni simili