get_form_ID(); // Vérifier que c'est le bon formulaire if ($form_id != 121) { return; } // Récupérer tous les champs $all_fields = $ninja_forms_processing->get_all_fields(); $email = ''; $username = ''; $password = ''; foreach ($all_fields as $field_id => $value) { switch ($field_id) { case 1542: // email $email = $value; if (email_exists($value)) { $ninja_forms_processing->add_error('email-exists-'.$field_id, 'Cette adresse email est déjà utilisée.', $field_id); } if (!is_email($value)) { $ninja_forms_processing->add_error('email-invalid-'.$field_id, 'Veuillez entrer une adresse email valide.', $field_id); } break; case 1548: // username $username = $value; if (!validate_username($value)) { $ninja_forms_processing->add_error('username-invalid-'.$field_id, 'Nom d\'utilisateur invalide. Veuillez essayer un autre.', $field_id); } if (username_exists($value)) { $ninja_forms_processing->add_error('username-exists-'.$field_id, 'Ce nom d\'utilisateur existe déjà. Veuillez en choisir un autre.', $field_id); } if (strlen($value) < 4) { $ninja_forms_processing->add_error('username-short-'.$field_id, 'Le nom d\'utilisateur doit contenir au moins 4 caractères.', $field_id); } break; case 1549: // password $password = $value; if (strlen($value) < 8) { $ninja_forms_processing->add_error('password-short-'.$field_id, 'Le mot de passe doit contenir au moins 8 caractères.', $field_id); } break; } } } // Désactiver la création d'utilisateur par FEditor add_action('ninja_forms_before_processing', function() { global $ninja_forms_processing; $form_id = $ninja_forms_processing->get_form_ID(); if ($form_id == 121) { remove_action('ninja_forms_pre_process', 'ninja_forms_before_pre_process_registration', 10); remove_action('ninja_forms_post_process', 'ninja_forms_process_register_form', 10); } }, 1); // Gérer la création d'utilisateur après validation réussie add_action('ninja_forms_post_process', 'custom_create_user_from_ninja_form', 10); function custom_create_user_from_ninja_form() { global $ninja_forms_processing; $form_id = $ninja_forms_processing->get_form_ID(); // Vérifier que c'est le bon formulaire if ($form_id != 121) { return; } // Vérifier qu'il n'y a pas d'erreurs if ($ninja_forms_processing->get_errors_count() > 0) { return; } // Récupérer les données du formulaire $email = $ninja_forms_processing->get_field_value(1542); $username = $ninja_forms_processing->get_field_value(1548); $password = $ninja_forms_processing->get_field_value(1549); $first_name = $ninja_forms_processing->get_field_value(1536); $last_name = $ninja_forms_processing->get_field_value(1537); $etablissement = $ninja_forms_processing->get_field_value(1842); $cursus = $ninja_forms_processing->get_field_value(1844); // 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()); // Ajouter une erreur générale $ninja_forms_processing->add_error('user-creation-failed', 'Une erreur est survenue lors de la création de votre compte.'); } 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); }