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

felino

Utente Attivo
12 Dic 2013
901
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.
 

felino

Utente Attivo
12 Dic 2013
901
10
18
Aci Catena (Catania)
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.