Ich habe einen Kunden, der eine WordPress-Seite hat, die Abonnements und ein Forum, das mit wp-discourse verbunden ist, verwaltet. Alles ist in Ordnung.
Aber jetzt möchte er zusätzliche Discourse-Seiten hinzufügen, die alle gegen die einzelne WordPress-Seite authentifiziert werden. Ich habe versucht, das Setup von der ersten Discourse-Seite auf die zweite zu kopieren, aber WordPress leitet zur ersten Discourse-Seite weiter. Ich dachte dann, dass ich vielleicht die erste Discourse-Seite zu einem Discourse_Connect-Server für die zweite Seite machen könnte, aber das funktioniert immer noch nicht (sie leitet ebenfalls nur zur ersten Discourse-Seite weiter und die zweite wird nicht angemeldet).
Gibt es eine Möglichkeit, eine einzelne WordPress-Seite zu haben, die die Authentifizierung für mehrere Discourse-Seiten bereitstellt?
Wenn Sie Single Sign-On für mehr als zwei Plattformen nutzen möchten, ist die korrekteste Lösung die Verwendung von Keycloak.
Dieser Ansatz ist gut, da wir uns nicht um einen Single Sign-On-Server und eine einfachere Anmeldung über soziale Netzwerke (und nicht nur) kümmern müssen.
Sie können beliebige Websites hinzufügen und entfernen, ohne Benutzer zu verlieren.
Das WP Discourse-Plugin ist nicht dafür eingerichtet, aber es sollte möglich sein.
Ich würde damit beginnen, einen site-URL-Parameter zur discourse_connect_url-Einstellung von Discourse hinzuzufügen. Unter WordPress verwenden Sie den site-Parameter, um die richtige Discourse-Seite festzulegen, zu der hier weitergeleitet werden soll:
Idealerweise könnten die oben genannten Änderungen mit action- und filter-Hooks unter WordPress vorgenommen werden. Es sieht so aus, als müssten Hooks zum Code hinzugefügt werden.
Ich gehe davon aus, dass die Spezifikation dafür nicht das Veröffentlichen von Beiträgen von WordPress auf mehreren Discourse-Seiten beinhaltet. Wenn das der Fall ist, wären die erforderlichen Änderungen etwas aufwendiger.
Ich werde Sie informieren, wenn mir weitere Probleme einfallen.
Bearbeiten: Ich muss darüber nachdenken, wie die Discourse-Benutzer-ID unter WordPress verwendet wird, um sicherzustellen, dass es keine Konflikte zwischen mehreren Seiten gibt – ein einzelner Benutzer unter WordPress könnte potenziell Konten auf mehreren WordPress-Seiten haben. Sie hätten auf jeder Seite eine andere Discourse-Benutzer-ID.
Bearbeiten: Das größte Problem, das ich sehe, ist, wenn die Einstellung „Discourse-Benutzer bei der Anmeldung erstellen oder synchronisieren“ auf den WordPress-Seiten aktiviert ist. Sie ruft die sync_sso-Route von Discourse über die API auf. Sie müssten wissen, mit welcher Discourse-Seite synchronisiert oder auf welcher Seite der Benutzer erstellt werden soll. Sie bräuchten auch einen Discourse-API-Schlüssel für jede Seite. Das scheint machbar, würde aber einige Komplexität hinzufügen.
Das klingt irgendwie möglich. Ja, ihm geht es nicht ums Posten, nur um die Authentifizierung und, ich schätze, das Pushen von Gruppen aus WooCommerce oder Ähnlichem.
Ich gehe davon aus, dass dies bedeutet, die Gruppenmitgliedschaften eines Benutzers auf einer bestimmten Discourse-Site anzupassen, wenn er einen Kauf auf der WordPress-Site tätigt. Das klingt machbar, wäre aber am besten mit einer API-Anfrage an die sync_sso-Route zu realisieren. Das WP Discourse-Plugin hat Funktionen, die dafür verwendet werden können, aber sie verwenden die Discourse-URL und den API-Schlüssel, die auf den Optionsseiten des Plugins festgelegt sind: https://github.com/discourse/wp-discourse/blob/main/lib/utilities.php#L278-L326. Vielleicht könnte das Plugin Filter-Hooks zu diesen Parametern hinzufügen, damit sie bedingt gesetzt werden können.
Ich glaube, er hat nicht geantwortet, als ich ihn gefragt habe, ob er für die Entwicklung spielen möchte (ich vermute, weil er mit anderen Dingen beschäftigt ist).
Es ist noch explorativ, daher habe ich kein Budget als solches. Aber ich kann etwas Entwicklerunterstützung und vielleicht eine kleine Finanzierung anbieten. Wenn Ihr Kunde auch etwas beisteuern möchte, können wir vielleicht etwas Geld zusammenlegen.