Schauen Sie sich meine erste Antwort in diesem Thema an, um Details zu erfahren, wie sich die Anmeldung bei Discourse einschränken lässt: How to prevent some WP users from being able to login to Discourse. Dies setzt voraus, dass die WordPress-Site als SSO-Anbieter für Discourse fungiert und Sie das WP Discourse-Plugin verwenden.
Damit kann ich den Zugriff prüfen, bevor ich den Benutzer zu Discourse leite.
Weißt du zufällig, ob es eine gute Möglichkeit gibt, zu prüfen, ob ein Benutzer ein aktives Abonnement hat?
Das wäre die Bedingung, anhand der ich entscheide, ob ich sie zu Discourse leite oder nicht.
Ich bin mir sicher, dass es eine Möglichkeit gibt, dies zu tun, aber ich bin mir nicht sicher, wie man auf das Memberpress-Abonnementsniveau eines Benutzers in WordPress zugreift. Es könnte jedoch sein, dass es in Beiträgen in unserer Kategorie Support > WordPress Beispiele dafür gibt, wie man das macht.
Wenn jemand anderes das Gleiche erreichen möchte: Ich habe die Lösung hier gefunden:
Simon: Eine letzte Frage: Wie lange bleibt ein Benutzer bei Discourse eingeloggt, bevor er ausgeloggt wird? Oder bleibt der Benutzer eingeloggt, bis er auf die Schaltfläche “Abmelden” klickt?
Dies wird über die Discourse-Site-Einstellung „maximum session age“ gesteuert. Diese Einstellung ist standardmäßig auf 1440 Stunden festgelegt. Sofern sie nicht auf einen sehr kleinen Wert gesetzt wird, ist sie keine zuverlässige Methode, um Benutzer auszuloggen. Der Grund dafür ist, dass sie die Zeitspanne festlegt, die ein Benutzer seit seinem letzten Besuch eingeloggt bleibt. Das Setzen von „maximum session age“ auf eine sehr kleine Stundenzahl könnte zudem für die Benutzer Ihrer Seite zu Unannehmlichkeiten führen.
Ich denke, Ihr bester Ansatz wäre es, Benutzer über die API aus Discourse auszuloggen, wenn die Mitgliedschaften ablaufen. Ein Codebeispiel, wie dies funktioniert, finden Sie hier: wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub. Möglicherweise benötigen Sie Unterstützung von einem Entwickler, um einen API-Aufruf zu tätigen, der Benutzer aus Discourse ausloggt, sobald ihre Mitgliedschaft abläuft.
Es ist nicht so einfach, nur die Funktion logout_from_discourse() aufzurufen, aber es sollte möglich sein, einen WordPress-Aktionshook zu verwenden, um diese Funktion aufzurufen, wenn eine bestimmte Aktion auf Ihrer WordPress-Site ausgeführt wird. Beispielsweise, wenn die Mitgliedschaftsebene eines Benutzers widerrufen wird. Möglicherweise kann jemand in der Discourse-Community Ihnen bei der Syntax helfen, die erforderlich ist, damit dies funktioniert.