Hook filtre des mise à jour utilisateur (Créer un compte)

  • WordPress :4.7
  • Statut : non résolu
4 sujets de 1 à 4 (sur un total de 4)
  • Auteur
    Messages
  • #1614427
    jcbarrez@free.fr
    Participant
    Initié WordPress
    3 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL : 5.6/?
    • Thème utilisé : adventurous
    • Extensions en place : User Role Editor
    • Nom de l’hébergeur : OVH
    • Adresse du site : usi-plongee.org

    Problème(s) rencontré(s) :

    Je développe un plugin qui abonne automatiquement un utilisateur à une liste de diffusion quand un rôle leur ai ajouté. Cette liste porte le nom du role. Par exemple, si je lui ajoute le rôle « author », il est abonné à la liste author@usi-plongee.org.

    Je n’arrive pas à filtrer l’attribution des rôles de l’utilisateur. Quel hook est déclenché quand je modifie le profil utilisateur ? quand j’ajoute un rôle ?

    Merci de votre aide.

    #1614487
    Qwindoo
    Modérateur
    Maître WordPress
    2861 contributions

    Hello jc, bienvenue parmi nous !

    Tu peux utiliser le hook profile_update :

    <?php
    do_action( 'profile_update', int $user_id, object $old_user_data )

    #1614805
    jcbarrez@free.fr
    Participant
    Initié WordPress
    3 contributions

    Tout simplement

    J’avais trouvé et testé ce hook, mais il n’avait pas marché. Et là miracle !!

    Merci beaucoup.

     

    #1615025
    jcbarrez@free.fr
    Participant
    Initié WordPress
    3 contributions

    Bonjour

    En fait cette action se déclenche dès la mise à jour du profil, mais avant que toutes les metadata soient à jour.
    J’utilise un plugin qui permet d’attribuer plusieurs rôles à un utilisateur.
    A la soumission du formulaire d’édition du profil, ce plugin enregistre les rôles dans la table méta.
    Mais au déclenchement de profile_update, ces rôles ne sont pas encore dans la table.
    Il m’est donc impossible de les récupérer par ce hook.

    J’ai essayé updated_user_meta, mais lui se déclenche à chaque mise à jour d’un role (metadata), donc plusieurs fois si l’utilisateur à plusieurs rôles :
    Si l’utilisateur a trois rôle par exemple, il récupère rôle1 la première fois qu’il se déclenche, rôle1 et rôle2 la deuxième fois, rôle1, rôle2 et rôle3 la troisième fois.
    Je ne peux pas lancer mon traitement 3 fois, il faudrait que je le lance qu’au dernier appel, mais comment savoir si c’est le dernier ?

    Il faudrait un hook qui se déclenche uniquement quand le formulaire est entièrement traité, ou alors mettre un timeout pour un déclenchement tardif, le temps que tous les rôles soient en base. Pas terrible quand même. je ne sais pas faire avec wp.

    Si quelqu’un a une idée.

    Merci.

4 sujets de 1 à 4 (sur un total de 4)
  • Vous devez être connecté pour répondre à ce sujet.