wake-up-neo.net

Hinzufügen von Funktionen zu Superadministratoren

Ich entwickle ein Plugin, das benutzerdefinierte Funktionen verwendet. Einige dieser Funktionen müssen allen Benutzern hinzugefügt werden, die Superadministratoren sind. Derzeit verwende ich diesen Code:

$supers = get_super_admins();
foreach ( $supers as $admin ) {
    $user = new WP_User( 0, $admin );
    $user->add_cap( 'my_cap' );
    $user->add_cap( 'my_second_cap' );
}

Ich bin jedoch besorgt, dass dieser Code den einzelnen Benutzern lediglich die Funktionen hinzufügt, im Gegensatz zu der Rolle, die ich normalerweise hätte. Wenn ein neuer Superadministrator erstellt wird, verfügt dieser nicht über diese Funktionen, da diese Funktion nur bei Aktivierung des Plugins ausgeführt wird.

Gibt es eine bessere Möglichkeit, Superadministratoren benutzerdefinierte Funktionen hinzuzufügen?

3
shea

Obwohl dies nicht gut dokumentiert ist, ist "Super Admin" keine Rolle (da es sich nicht um ein tatsächliches Rollenobjekt handelt). Es ist eher ein besonderer "Status".

Eine Liste der Benutzer, die Super-Administratoren sind (auch als "Netzwerkadministratoren" oder "Site-Administratoren" bezeichnet), wird in einem Datenbank-Site-Optionsdatensatz mit dem Namen "site_admins" gespeichert. Im Allgemeinen reicht es aus, der Administratorrolle eine Funktion hinzuzufügen, da Superadministratoren de facto auch Mitglieder der Administratorrolle mit all ihren Funktionen sind.

Das heißt, wenn Sie nur Super-Administratoren (aber nicht "normalen" Administratoren) eine Funktion hinzufügen müssen, ist es möglicherweise besser, einfach die is_super_admin() -Funktion von WordPress zu verwenden, anstatt überhaupt Funktionen zu verwenden, da davon ausgegangen wird, dass Super-Administratoren keine haben Beschränkungen.

Wenn Sie wirklich Funktionen verwenden müssen, sollten Sie die Hooks grant_super_admin und remove_super_admin verwenden, um Funktionen zu/für Super-Admin-Benutzer (bzw.) hinzuzufügen oder zu entfernen sobald sich ihr Super-Admin-Status ändert .

Was das Ändern der Funktionen für vorhandene Superadministratorbenutzer betrifft, ist Ihre Vorgehensweise die beste. Holen Sie sich eine Liste der Superadministratorbenutzer, durchlaufen Sie sie und fügen Sie den einzelnen Funktionen hinzu (obwohl diese nur einmal ausgeführt werden müssenJEwenn Sie die oben genannten Haken verwendet haben).

6
Matt van Andel