Hi Eva, I went over your code and there’s no errors that I can spot - and I totally get your frustration. If it hadn’t been for Simon Cossar I don’t know how I’d have resolved it myself.
So, taking it backwards: if the PHP is correct, then something else must be disconnected. (browniepoints for me, yay.)
But…
I don’t know enough about any of that to be able to give suggestions or help.
If you’ve got your forum parked with the boys from Discourse Hosting, you could ask Richard (his name tag won’t pop, but this is his profile: Profile - RGJ - Discourse Meta )
Or perhaps @simon might be able to provide you with the missing steps.
Keeping my fingers crossed for you.
edit:
p.s. these are all the related plug-ins i use (+ that PHP one)
(Memberpress Drip is email marketing, so not related to this)
groups are any and all: closed and opened (i don’t give access to hidden groups, come to think of it)
these are some of the group names as displayed in ‘Groups’ - and as you can see, the “NoSpacesNames” are the ones that coincide with the PHP settings
If by parameters you mean the following, then no:
nor in the actual group settings (where you create it, with name, owner, etc.), it’s all straight forward and not connected to accessing through SSO - so setting or not setting this as a person’s primary group is not relavant.
There is one webhook here on Discourse that I put in as instructed by the WP-Discourse plugin:
email verification technically goes via memberpress: they (my wp-instance) send the log-in details to the user. by clicking the log-in link the users verify their address.
i know for a fact that it’s not through Discourse, because for a while it ALSO went through discourse (glitch somewhere) and Richard sorted that for me.
Avec cette méthode, est-il possible d’attribuer le niveau de confiance 2 aux membres de Discourse lorsqu’ils créent un compte en payant, et de le faire passer au niveau 1 s’ils ne paient pas mensuellement ?
Je ne l’ai pas regardé depuis un moment, mais ce dont vous auriez besoin, c’est d’une communication entre votre code Discourse et votre code de paiement (dans mon cas : MemberPress).
Ainsi, si la personne cesse de payer, MemberPress modifie son code, et ce code correspond à un niveau de groupe différent.
S’il n’y a pas de lien avec le paiement, le niveau de groupe ne sera pas ajusté.
Ah, attendez.
En relisant votre question : je ne suis pas sûr de savoir comment cela fonctionne avec les niveaux de confiance…
mais… si tout le reste échoue, vous pouvez facilement créer un GROUPE défini sur le niveau de confiance 2 et un autre sur le niveau de confiance 1, et faire en sorte que votre plugin d’adhésion attribue ces groupes à vos membres.
J’espère que cela vous aide. Sinon, je devrai plonger à nouveau dedans. Cela fonctionne sans interruption depuis notre précédente conversation et je ne l’ai plus revu depuis.
C’est une excellente idée ! Oui, nous pouvons définir des niveaux de confiance pour les groupes Discourse. Mais je n’ai pas assez d’expérience avec MemberPress.
Pouvons-nous ajouter automatiquement les utilisateurs payants de MemberPress à un groupe spécial ?
Cela a été évoqué dans un autre post sur Meta aujourd’hui, j’ai donc examiné le code pour confirmer si le niveau de confiance d’un utilisateur peut être réduit en l’ajoutant à un groupe définissant un niveau de confiance inférieur à celui du groupe actuel de l’utilisateur. En examinant le code, je constate que ce n’est pas possible :
def grant
if @user.trust_level < @trust_level
@user.change_trust_level!(@trust_level)
@user.save!
end
end
Si le niveau de confiance d’un utilisateur est inférieur au niveau de confiance accordé par le groupe, l’ajout de l’utilisateur au groupe mettra à jour son niveau de confiance. Sinon, il n’y aura aucun changement dans le niveau de confiance de l’utilisateur.
Il existe probablement d’autres plugins d’adhésion capables de faire la même chose pour vous.
Il est 20 h de mon côté et je termine ma journée, mais si vous avez besoin d’aide supplémentaire, je serais ravi de m’en occuper demain matin. Faites-le-moi simplement savoir.
Je suis un peu rouillé (de plus, il est tard), mais le niveau de confiance n’est pas vraiment pertinent. Je n’utilise pas du tout les niveaux de confiance. Le groupe TL 2 a accès à « ceci », tandis que le groupe TL 1 n’y a pas accès.
Le niveau de confiance réel n’est pas utilisé. Tout membre peut avoir un niveau de confiance de 1 et obtenir tout de même l’accès (via un paiement) au groupe TL 4 — à condition que je ne définisse pas les permissions sur les niveaux de confiance, mais uniquement sur les groupes.
Oui, la bonne approche consiste à utiliser les groupes et les permissions de sécurité par catégorie. Il ne devrait pas être nécessaire de se fier aux niveaux de confiance.
@Dani1, merci de partager tes essais et tribulations ici, c’est très utile pour les autres utilisateurs de MemberPress comme moi.
Cela a du sens, mais je me demande ce qui se passe si l’abonnement du membre expire et qu’il ne se déconnecte jamais, continuant ainsi d’accéder au groupe… As-tu constaté que cela pose problème ?
Si c’est le cas, je me demande s’il existe un moyen de forcer une actualisation ou une déconnexion…
@RGJ Le code ci-dessus marqué comme solution supprime bien les membres des groupes, mais comme Dani1 l’a mentionné, cela ne s’applique qu’après leur déconnexion.
Si un utilisateur est mis à jour via le processus de connexion SSO normal, la mise à jour ne se produira qu’après sa déconnexion et sa reconnexion. L’exemple de code ci-dessus est la méthode la plus simple pour aborder le problème, mais ce n’est probablement pas la meilleure façon de gérer l’appartenance aux groupes.
Le plugin WP Discourse dispose de plusieurs fonctions utilitaires activées lorsque WordPress fonctionne en tant que site fournisseur SSO pour Discourse. Ces fonctions permettent de mettre à jour les appartenances aux groupes sans obliger l’utilisateur à se déconnecter de Discourse. Ces fonctions sont décrites dans le sujet lié par Richard : Manage group membership in Discourse with WP Discourse SSO.
Le sujet lié par Richard fournit des détails sur les deux approches différentes. Je vais ajouter ces détails au sujet howto la semaine prochaine. Pour l’instant, il serait bon de lire attentivement le sujet.
(évidemment, tout cela est très manuel. Je n’ai qu’une poignée de personnes et je sais exactement ce que chacun fait. Je n’ai pas encore essayé la solution de Richard, mais c’est rassurant de savoir qu’elle existe !)
Pourriez-vous s’il vous plaît ajouter un lien ici quand cela arrivera ? Merci !
Bien sûr, le sujet est ici : Manage group membership in Discourse with WP Discourse SSO. Il explique comment utiliser les fonctions add_user_to_discourse_group et remove_user_from_discourse_group de WP Discourse. En supposant que votre site WordPress soit configuré comme fournisseur SSO pour Discourse, ce sont les fonctions que vous devez utiliser pour gérer les appartenances aux groupes sur Discourse.
L’exemple utilisé dans ce sujet concerne le plugin PaidMembershipsPro, mais une approche similaire devrait fonctionner avec n’importe quel plugin d’adhésion WordPress bien conçu.
Je vais ajouter des détails au sujet sur la façon de gérer l’appartenance aux groupes avec les paramètres SSO add_groups et remove_groups. Dans la plupart des cas, gérer l’appartenance aux groupes en ajoutant ces paramètres à la charge utile SSO ne sera pas la meilleure approche, car cela oblige les utilisateurs à se déconnecter et à se reconnecter à Discourse avant que leur appartenance aux groupes ne soit mise à jour.
J’espère que dans un avenir proche, il existera une solution prête à l’emploi pour lier Discourse à des plugins d’adhésion WordPress spécifiques. Actuellement, cela ne peut être fait qu’en ajoutant un peu de code personnalisé à votre site WordPress. Si ce n’est pas quelque chose que vous faites habituellement, vous devrez peut-être engager un développeur pour vous aider.
Merci pour les détails. Je vais voir si je peux les assimiler.
Je suis d’accord — je préférerais que l’ajout et la suppression de groupes soient effectués en temps réel plutôt qu’au moment de la déconnexion et de la connexion de l’utilisateur.
Si je n’arrive pas à régler le problème, j’embaucherai un développeur ici pour le faire et je partagerai le code. Je pense qu’il y en a quelques-uns qui l’ont fait dans la section marketplace.