ALLINAPPLI / snpnc

0 stars 0 forks source link

CF7 rôles WP #49

Closed allinappliadmin closed 10 months ago

allinappliadmin commented 11 months ago

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

allinappliadmin commented 11 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

allinappliadmin commented 11 months ago

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é"]

allinappliadmin commented 11 months ago

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

wyde22 commented 11 months ago

je viens de faire une premère version du plugin. Je vais le mettre sur le site de dev et faire des tests

wyde22 commented 11 months ago

normalement les rôles utilisateur WP sont comme ceci :

Modifier-le-compte-Dewy-‹-test-devweb-—-WordPress

allinappliadmin commented 11 months ago

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>';
    }

?>
wyde22 commented 11 months ago

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

allinappliadmin commented 11 months ago

image pour activer ou désactiver selon le formulaire image oui j'en ai besoin image j'ai besoin de créer les identifiants sur la base 'firstname'.'lastname'

wyde22 commented 11 months ago

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

Comptes-‹-SNPNC-FO-—-WordPress

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

wyde22 commented 11 months ago

voici le repository du plugin : https://github.com/wyde22/frontend-registration-contact-form-7