Gute Arbeit beim Herausfinden dessen 
Ich möchte nicht von deiner geleisteten Arbeit ablenken, aber mein erster Eindruck ist, dass du an dieser Stelle einen externen Authentifizierungsdienst (wie okta.com oder auth0.com) in Betracht ziehen solltest. Wann immer du den Punkt erreichst, an dem du drei verschiedene Dienste (z. B. Patreon, WordPress und Discourse) verknüpfen musst, um eine einmalige Authentifizierung in einem Schritt zu erreichen, ist das ein Zeichen dafür, dass du eine dedizierte Authentifizierungslösung in Betracht ziehen solltest. Unabhängig davon, ob du es auf irgendeine Weise schaffen kannst, besteht hier ein nicht zu vernachlässigendes langfristiges Risiko, dass deine Lösung versagt oder nicht in allen Fällen funktioniert.
Wenn du diesen Weg dennoch gehen möchtest, habe ich einige Vorschläge, aber mit dem fairen Hinweis, dass dies etwas technisch wird. Ich füge diese hier teilweise hinzu, falls jemand anders darauf stößt und dies weiterverfolgen möchte.
Ich habe mir kurz den Patreon WordPress-Plugin-Code angesehen, und es sieht so aus, als ob ihr OAuth-Flow einen Schlüssel/Wert für final_redirect_uri im state-Parameter akzeptiert. Dies würde es ermöglichen, direkt von der Patreon-Authentifizierung zum Discourse SSO zu wechseln, wodurch sowohl die oben erwähnten Plugins „Members“ als auch „Redirect“ überflüssig werden und Probleme, die bei diesem Ansatz auftreten könnten, umgangen werden.
Viele Authentifizierungsdienste haben eine Version des final_redirect_uri-Parameters, also einen Parameter, der es ermöglicht, das Ziel zu ändern, zu dem der Benutzer nach der Authentifizierung weitergeleitet wird. Wenn du dies liest, weil du versuchst, dasselbe Problem mit einem anderen Dienst (also nicht Patreon) zu lösen, und du dich auch dafür entschieden hast, dass meine Warnung vor der Verbindung von drei verschiedenen Diensten hier nicht zutrifft, dann ist dies der Punkt, an dem du suchen solltest.
Das bedeutet, du möchtest, dass der Shortcode, der den Patreon-Login-Button generiert, ein final_redirect_uri als Argument akzeptiert, das dann an die endgültige von Patreon verwendete Login-URL weitergegeben wird. Wenn man sich den Patreon WordPress-Plugin-Code ansieht, ist das ein machbarer Vorschlag. Um dir einen Eindruck zu geben, sieht die relevante Funktion, die den Patreon-URL generiert, so aus:
Patreon_Frontend::patreonMakeLoginLink(false, array( 'final_redirect_uri' => # ) );
Im Grunde ist der Code bereits teilweise so eingerichtet, dass er ein benutzerdefiniertes final_redirect_uri verarbeiten kann. Ich kann verstehen, warum die Entwickler des Patreon WordPress-Plugins dies vielleicht nicht hinzufügen möchten, aber wenn du dich sicher genug fühlst, das hier Beschriebene zu erläutern, könnte es sich lohnen, ein Issue in ihrem GitHub-Repository zu erstellen. Falls das nicht klappt, kannst du die oben erwähnte Funktion verwenden, um selbst einen Link zu generieren und deinen eigenen Button zu erstellen (oder einen WordPress-Developer damit beauftragen).
Nur eine kleine Anmerkung zur Konstruktion der SSO-URL: Es ist etwas klarer, dies zu verwenden:
https://discourse.example.com/session/sso?return_path=/
anstatt
https://discourse.example.com/session/sso?return_path=%2F
Der letzte Teil, return_path, ist der Pfad, zu dem der Benutzer in Discourse nach dem Login weitergeleitet wird. Wenn es / ist, wird er zur Forum-Startseite geleitet. Weitere Informationen zur Konstruktion von SSO-URLs findest du unter WP Discourse Tipps und Tricks.