Closed allinappliadmin closed 10 months ago
petit dev simple sur Wordpress avec Contact Form 7 pour assigner un rôle particulier à un utilisateur selon sa réponse à une question dans un formulaire : s'il choisit bleu, il a le rôle bleu et s'il choisit rouge il a le rôle rouge
champ compagnie
[select* compagnie first_as_label "-- Votre compagnie* --" "Air Antilles" "Air Austral" "Air Calédonie" "Air Calin" "Air Caraïbes Atlantique" "Air Caraïbes Régional" "Air Corsica" "Air France" "Air France Tahiti" "Amelia" "ASL Airlines France" "Chalair" "Corsair" "Easy Jet" "Ewa Air" "Frenchbee" "Hop!" "La Compagnie" "Lux Aviation" "Norse" "Ryanair" "Transavia" "Travel Service" "TUIFly" "Volotea" "Vueling" "Autre" "Retraité"]
Rôle : à chaque valeur de la variable compagnie correspond un rôle WP
à accorder à tous par défaut : snpnc
2 rôles test :
air-antilles
easyjet
je viens de faire une premère version du plugin. Je vais le mettre sur le site de dev et faire des tests
normalement les rôles utilisateur WP sont comme ceci :
un truc du genre ?
<?php
global $wp_roles;
if ( ! isset( $wp_roles ) )
$wp_roles = new WP_Roles();
$roles = $wp_roles->get_names();
foreach ($roles as $role_value => $role_name) {
echo '<p><input type="checkbox" value="' . $role_value . '">'.$role_name.'</p>';
}
?>
ok je viens de trouver une solution. En fait le problème provenait du plugin Frontend Registration - Contact Form 7. Ce plugin forçait la création du rôle adhérent à la soumission du formulaire d'adhésion. Du coup, l'ajout de mon rôle via mon hook ne fonctionnait pas. En désactivant le plugin tout rentre en ordre.
Pour une bonne correspondance entre les rôles et les compagnies, il faut mettre des rôles sans accent, en minuscule et enlever les caractères spéciaux comme le caractère point d'exclamation.
En fait dans le menu déroulant de contact form 7, on doit ajouter directement en dur une values humainent lisible. Du coup je dois faire un traitement sur cette value. Pour se faire j'utilise la fonction sanitize_title
qui nettoie la chaîne en enlevant les caractères spéciaux, mets tout en minuscule et enlève les accents. Il faut que le rôle soit inscrit à l'identique
pour activer ou désactiver selon le formulaire oui j'en ai besoin j'ai besoin de créer les identifiants sur la base 'firstname'.'lastname'
j'ai revu un peu les choses et je suis reparti du plugin Frontend Registration - Contact Form 7. J'ai fait un fork et dans le code j'ai désactivé l'option pour choisir un rôle à la création du contact. J'ai également modifié la création du login en ajoutant comme tu me l'a mentionné prénom.nom first_name.last_name
. J'ai fait coïncidé le nom des champs dans le code afin de créer facilement le login. le fork est présent sur la plateforme
Le mieux est d'adapté le panneau d'administration du plugin pour ajouter ou supprimer les options. Il y a des choses intéressantes à faire avec ce plugin mais il me faut un peu plus de temps pour l'améliorer.
Il se trouve sur mon repo public. Si cela te dérange n'hésites pas à revenir vers moi et je ferais le changement vers ton organisation. Je pense qu'on peut garder ce plugin (Fonctionnalités projet SNPNC) afin de mettre le code personnalisé du projet dans cette extension. Je t'invite à tester et à revenir vers moi si besoin
voici le repository du plugin : https://github.com/wyde22/frontend-registration-contact-form-7
https://snpnc.all-in-appli.com/connexion https://snpnc.all-in-appli.com/adherer/ https://snpnc.all-in-appli.com/wp-admin/admin.php?page=wpcf7&post=15954&action=edit
https://stackoverflow.com/questions/62963002/contact-form-7-change-user-role-after-submitting https://stackoverflow.com/questions/59190790/contact-form-7-cf7-radio-button-to-change-user-role-on-wordpress https://stackoverflow.com/questions/22730386/how-to-automatically-add-user-profile-data-to-contact-form-in-wordpress