- Home
- Categorie
- Coding e Sistemistica
- CMS & Piattaforme Self-Hosted
- [Contact Form 7] Funzione personalizzata: ho un problema.
-
[Contact Form 7] Funzione personalizzata: ho un problema.
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.- Quando l'amministratore aggiungere un nuovo account, il sistema crea due user_meta personalizzati:
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');
- 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.
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);
- nell'intestazione supplementare del form ho aggiunto:
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:
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.
-
Se già funziona tutto bene, penso ti basti aggiungere qualche controllo.
Del tipo:
Se l'utente fa accesso e lo status di privacy non esiste fai redirect sulla pagina dedicata e invia la mail, altrimenti no ( semplice if ed else ).Poi non ho letto bene il codice che oggi ho pochissimo tempo a disposizione. Piu tardi ci do un occhio più approfondito
-
Ciao Ultima,
il controllo esiste già function_check_login_redirect, ma a quanto pare non va!Se puoi verificare più tardi, grazie.
-
Se hai copiato il codice così com'è, ti ho trovato l'errore
Non hai messo il simbolo '$' in acceptPrivacyControl
-
Esatto, Stefano, il problema era proprio lì.
Grazie.