WPMU Wenn die MU-Site keinen Administrator hat, deaktivieren Sie die Site

Also habe ich an diesem Gedanken herumgebastelt. Arbeiten mit WooCommerce-Abonnements – Wenn der Nutzer ein wiederkehrendes kostenpflichtiges Mitglied ist, kann er seine eigene Unterwebsite erstellen und verwalten.

Wenn die wiederkehrenden Zahlungen jedoch vorüber sind, wird die Benutzerrolle von “Administrator” automatisch in “Abonnent” geändert.

Da es nur einen Administrator pro Subsite gibt und die Rolle dieser Person sich in einen Subscriber ändert, kann ich eine Verknüpfung herstellen:

Wenn Abonnent, deaktivieren Sie deren Site (s). andernfalls, wenn Administrator, ihre Site (s) aktivieren.

Ich würde gerne ein Feedback dazu bekommen!

Vielen Dank! Roc.

Solutions Collecting From Web of "WPMU Wenn die MU-Site keinen Administrator hat, deaktivieren Sie die Site"

Ich würde anfangen, indem ich in den set_user_role . Sie würden 3 Argumente an Ihre Callback-function übergeben – die Benutzer-ID, die neue Benutzerrolle und ein Array der alten Benutzerrollen (das scheint mir seltsam zu sein, dass Sie ein Array von Rollen nicht weitergeben können, aber naja) .

Hier ist ein Beispielcode – ich bin mir nicht sicher, wie Sie die Websites erhalten, die der Benutzer besitzt, aber es sollte Ihnen eine allgemeine Idee geben:

 function my_set_user_role_callback( $user_id, $new_role, $old_roles ) { // Get the user sites here - not sure how you'd do that, but there should be a way $user_sites = array(); if ( $user_sites ) { if ( in_array( 'administrator', $old_roles ) && $new_role == 'subscriber' ) { foreach ( $user_sites as $site ) { // Archive the site $site->archived = true; update_blog_details( $site->userblog_id, (array) $site ); } } elseif ( in_array( 'subscriber', $old_roles ) && $new_role == 'administrator' ) { foreach ( $user_sites as $site ) { // Un-archive the site $site->archived = false; update_blog_details( $site->userblog_id, (array) $site ); } } } } add_action( 'set_user_role', 'my_set_user_role_callback', 10, 3 ); 

Sobald Sie herausgefunden haben, wie Sie die Benutzer-Sites erhalten, korrigieren Sie die Eigenschaften des $site Objekts mit den richtigen (es besteht die Möglichkeit, dass diese korrekt sind, aber immer noch).


PS: Sie können Ihren gesamten Code in ein Plugin stecken und das Netzwerk aktivieren oder in das Verzeichnis wp-content / mu-plugins / stellen, so dass es immer für alle Seiten aktiviert ist.