$field) { switch ($field_id) { case 1542: // email $email = $field['value']; break; case 1548: // username $username = $field['value']; break; case 1549: // password $password = $field['value']; break; } } // Validation de l'email if (email_exists($email)) { $form_data['errors']['fields'][1542] = 'Cette adresse email est déjà utilisée.'; } // Validation du nom d'utilisateur if (username_exists($username)) { $form_data['errors']['fields'][1548] = 'Ce nom d\'utilisateur est déjà pris.'; } // Validation nom d'utilisateur (exemple : au moins 4 caractères) if (strlen($username) < 4) { $form_data['errors']['fields'][1548] = 'Le nom d\'utilisateur doit contenir au moins 4 caractères.'; } // Validation mot de passe (exemple : au moins 8 caractères) if (strlen($password) < 8) { $form_data['errors']['fields'][1549] = 'Le mot de passe doit contenir au moins 8 caractères.'; } // Si des erreurs, arrêter le traitement if (!empty($form_data['errors']['fields'])) { $form_data['errors']['form'] = 'Veuillez corriger les erreurs ci-dessus.'; $form_data['abort'] = true; } return $form_data; } // Désactiver la création d'utilisateur par FEditor add_action('ninja_forms_before_processing', function( $form_data ) { if ( $form_data['id'] == 121 ) { remove_action('ninja_forms_after_submission', 'ninja_forms_process_register_form', 10, 1); } }); // Gérer la création d'utilisateur après validation réussie add_action('ninja_forms_after_submission', 'custom_create_user_from_ninja_form', 11, 1); function custom_create_user_from_ninja_form($form_data) { // Vérifier que c'est le bon formulaire if ($form_data['id'] != 121) { return; } // Récupérer les données du formulaire $fields = $form_data['fields']; $email = ''; $username = ''; $password = ''; $first_name = ''; $last_name = ''; $etablissement = ''; $cursus = ''; foreach ($fields as $field) { switch ($field['id']) { case 1542: // email $email = $field['value']; break; case 1548: // username $username = $field['value']; break; case 1549: // password $password = $field['value']; break; case 1536: // first_name $first_name = $field['value']; break; case 1537: // last_name $last_name = $field['value']; break; case 1842: // etablissement $etablissement = $field['value']; break; case 1844: // cursus $cursus = $field['value']; break; } } // Créer l'utilisateur avec le mot de passe fourni $user_data = array( 'user_login' => $username, 'user_email' => $email, 'user_pass' => $password, 'first_name' => $first_name, 'last_name' => $last_name, 'role' => 'subscriber', ); $user_id = wp_insert_user($user_data); if (is_wp_error($user_id)) { // En cas d'erreur lors de la création error_log('Erreur création utilisateur: ' . $user_id->get_error_message()); // Optionnel : ajouter une erreur à afficher à l'utilisateur $form_data['errors']['form'] = 'Une erreur est survenue lors de la création de votre compte.'; $form_data['halt_processing'] = true; } else { // Succès - sauvegarder les meta données personnalisées update_user_meta($user_id, 'etablissement', $etablissement); update_user_meta($user_id, 'cursus', $cursus); // Connecter automatiquement l'utilisateur wp_set_auth_cookie($user_id); wp_set_current_user($user_id); return $form_data; }