Wir verwalten eine Mitgliedschaft über unser Wordpress/Woocommerce-System. Wir verwenden Discourse seit ein paar Jahren auf einer Subdomain mit SSO, und es hat großartig funktioniert. Ich habe Code in meiner functions-Datei, der den Gruppenzugriff hinzufügt/entfernt, wenn jemand beitritt/kündigt.
Wir haben eine Funktion in unserer Mitgliedschaft hinzugefügt, bei der Leute einer kleinen Gruppe von 6-8 Personen für wöchentliche Zoom-Anrufe beitreten können.
Um dies zu verwalten, haben wir einen Wordpress-Post-Typ namens „Cohorts“ erstellt, der die wöchentlichen Anrufinformationen enthält, und diese Cohorts dann einem Benutzer über benutzerdefinierte Benutzerfelder zugewiesen.
Hier ist, was ich tun möchte:
Erstellen Sie für jede der Kohorten eine Gruppe.
Erstellen Sie für jede der Kohorten eine Unterkategorie, zu der nur die Gruppe aus Nr. 1 Zugang hat.
Fügen Sie jedes der Mitglieder zu seiner jeweiligen Gruppe hinzu, was ihnen Zugang zu ihrer jeweiligen Unterkategorie für ihre Kohorte verschafft.
Ich weiß, wie man Nr. 3 macht, aber gibt es eine Möglichkeit, Gruppen und Unterkategorien (mit den Sicherheitseinstellungen) programmatisch hinzuzufügen?
Ich kann diese Funktionalität in den WP-Discourse-Dienstprogrammen nicht finden. Auch wenn ich mir die API ansehe, sehe ich, wo Kategorien hinzugefügt werden können, aber nicht die Sicherheitsfunktionen.
Ja, das ist möglich. Sie können jede API-Anfrage an Discourse von WordPress aus mit der Hilfsmethode discourse_request stellen, d. h.
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$args = array(
"body" => "",
"type" => "post"
);
$response = DiscourseUtilities::discourse_request( $path, $args );
Dies formatiert die Anfrage korrekt und verwendet den API-Schlüssel und den Benutzer, die Sie in den WP Discourse-Einstellungen angegeben haben. Sie benötigen einen globalen Schlüssel für die Aktionen, auf die Sie sich beziehen (wenn Sie denselben Schlüssel auch für die normale WP Discourse-Funktionalität verwenden).
Beachten Sie, dass die “Sicherheitseinstellungen” über den Parameter permissions gesteuert werden. Sie müssen ihm lediglich ein Objekt mit Gruppennamen als Schlüssel und Berechtigungsstufen als Ganzzahlen als Werte übergeben, z. B.
Tut mir leid Tim, ich war die letzten Tage weg. Es sieht so aus, als ob die Methode discourse_request angepasst werden muss, um dies zu unterstützen. Ich werde nächste Woche einen PR dafür erstellen und es wird wahrscheinlich noch eine Woche dauern, bis dieser zusammengeführt wird.
Wenn Sie es früher als das möchten, können Sie die zugrunde liegenden WP-Methoden wie folgt verwenden:
$api_credentials = DiscourseUtilities::get_api_credentials();
if ( is_wp_error( $api_credentials ) ) {
return $api_credentials;
}
$headers = array(
'Api-Key' => sanitize_key( $api_credentials['api_key'] ),
'Api-Username' => sanitize_text_field( $api_credentials['api_username'] ),
'Accept' => 'application/json',
);
$body = array( /* spezifisch für den Endpunkt, den Sie verwenden */ );
$url = /* Die absolute URL für den Endpunkt, den Sie verwenden */ ;
$opts = array(
'headers' => $headers,
'body' => json_encode( $body ),
'method' => 'PUT'
);
$result = wp_remote_request( $url, $opts );
Hallo @timgrahl, könntest du eine funktionierende Funktion für WordPress mit WooCommerce teilen, um Benutzer zu Gruppen hinzuzufügen/zu entfernen?
Ich benutze WooCommerce mit Mitgliedschaften und versuche, dies zum Laufen zu bringen… wenn ein WordPress-Benutzer eine aktive WooCommerce-Mitgliedschaft hat, wird der Benutzer zur Gruppe X hinzugefügt… wenn die Mitgliedschaft gekündigt oder abgelaufen ist, wird der Benutzer aus der Gruppe X entfernt.