Ich arbeite gerade daran. Die erste Version ist für eine Headless-WordPress-Site, die das Remix-Framework für ihr Frontend verwendet. Sobald das erledigt ist, werde ich eine Version für reguläre WordPress-Sites erstellen. Es wird wahrscheinlich ein Plugin sein, das das WP Discourse-Plugin erweitert. Ich hoffe, dass das meiste, was ich auf der Headless-WordPress-Site mache, auf reguläre WordPress-Sites übertragen werden kann, aber es könnten einige Kompromisse erforderlich sein.
Benutzern zu erlauben, direkt von einer externen Website aus zu kommentieren, ist trivial zu implementieren. Die Hauptanforderung ist, dass die externe Website Zugriff auf die Anmeldeinformationen des Benutzers für Discourse hat. Dies kann entweder geschehen, indem die externe Website als DiscourseConnect-Anbieter für Discourse verwendet wird, oder indem Discourse als DiscourseConnect-Anbieter für die externe Website konfiguriert wird.
Im zweiten Szenario – bei dem die externe Website nicht der DiscourseConnect-Anbieter für Discourse ist – muss der Benutzer beim ersten Mal, wenn er von der externen Website aus kommentieren möchte, auf einen Link klicken, um sein Konto auf der externen Website mit seinem Discourse-Konto zu verknüpfen (oder sich auf Discourse zu registrieren, falls er dies noch nicht getan hat). Aus Sicht des Benutzers kann dies ziemlich nahtlos erfolgen.
Die obige Änderung lässt das Ganze jedoch nicht wie ein reguläres Kommentarsystem wirken. Eine normale Erwartung an ein Kommentarsystem ist, dass man alle Kommentare lesen und mit ihnen interagieren kann. Das WP Discourse-Plugin zeigt nur eine Auswahl von Kommentaren an, die von einer speziellen Route von Discourse abgerufen werden. Es bietet keine Funktionalität zur Interaktion mit Kommentaren.
Die schwierigen Teile des Problems sind:
- Paginierung aller Kommentare eines Themas auf WordPress, unter Berücksichtigung, dass es Tausende davon geben könnte
- Bereitstellung einer Benutzeroberfläche, die dem Benutzer Feedback gibt, wo er sich in einer langen Kommentarliste befindet
- Ermittlung, wie Kommentare angezeigt werden, die direkte Antworten auf andere Kommentare sind. (Die Konvention von Discourse hierfür stimmt nicht mit der Art und Weise überein, wie die meisten Kommentarsysteme mit Antworten umgehen.)
- Ermöglicht Benutzern, direkt auf einen Kommentar zu antworten, einen Kommentar zu mögen, eigene Kommentare zu bearbeiten usw.
- Umgang mit Kommentaren, die auf Discourse erstellt wurden und Inhalte oder Markup enthalten, die auf der externen Website nicht einfach gerendert oder mit ihnen interagiert werden können. Zum Beispiel Oneboxes, Umfragen…
- Bereitstellung einer Möglichkeit, Kommentare nach neuesten, ältesten, besten usw. zu filtern…
All dies muss erreicht werden, ohne den Server der externen Website übermäßig zu belasten, zu viele API-Anfragen an Discourse zu stellen oder zu viel Speicher auf dem Gerät des Benutzers zu verbrauchen (das Ziel ist es, ein leichtgewichtiges Kommentarsystem zu schaffen). Es ist machbar, aber es ist nichts, das einfach in den bestehenden WP Discourse-Code übernommen werden kann, ohne ihn erheblich zu verändern.