Hinzufügen von Fähigkeiten zu Super Admins

Ich entwickle ein Plugin, das benutzerdefinierte Fähigkeiten verwendet. Einige dieser functionen müssen allen Benutzern hinzugefügt werden, die Superadministratoren sind. Momentan 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 nur die Fähigkeiten zu den einzelnen Benutzern hinzufügt, im Gegensatz zu der Rolle, wie ich es normalerweise tun würde. Wenn ein neuer Superadministrator erstellt wird, verfügen diese nicht über diese functionen, da diese function nur bei der Aktivierung des Plugins ausgeführt wird.

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

Solutions Collecting From Web of "Hinzufügen von Fähigkeiten zu Super Admins"

Obwohl dies nicht gut dokumentiert ist, ist “Super Admin” keine Rolle (insofern es kein tatsächliches Rollenobjekt ist). Es ist mehr wie ein besonderer “Status”.

Eine Liste der Benutzer, die Super Admins sind (auch “Netzwerkadministratoren” oder “Site-Administratoren” genannt), werden in einem database-Site- site_admins namens site_admins . Im Allgemeinen reicht das Hinzufügen einer function zur Administratorrolle aus, da Super Admins de facto auch Mitglieder der Administratorrolle mit all ihren Fähigkeiten sind.

Das heißt, wenn Sie eine function nur für Super Admins (aber nicht für “normale” Administratoren) hinzufügen müssen, ist es besser, die function is_super_admin() von WordPress zu is_super_admin() anstatt Fähigkeiten zu verwenden, da Super Admins vorausgesetzt werden habe keine Einschränkungen.

Wenn Sie wirklich functionen verwenden müssen, sollten Sie die grant_super_admin und remove_super_admin , um functionen zu Super-Admin-Benutzern hinzuzufügen bzw. zu entfernen, sobald sich ihr Super-Admin-Status ändert .

Was nun die Möglichkeiten für bestehende Super-Admin-Benutzer betrifft, ist Ihr Ansatz der beste … holen Sie sich eine Liste von Super-Admin-Benutzern, durchlaufen Sie sie und fügen Sie ihnen functionen hinzu (obwohl Sie das nur EINMAL ausführen müssen, wenn Sie das obige verwenden) Haken).

Die Dinge zu tun:

  1. Holen Sie sich die Autorenrolle.
  2. Fügen Sie dieser Rolle functionen hinzu.

Beispielsweise:

 function add_theme_caps() { // gets the author role $role = get_role( 'author' ); // This only works, because it accesses the class instance. // would allow the author to edit others' posts for current theme only $role->add_cap( 'edit_others_posts' ); } add_action( 'admin_init', 'add_theme_caps'); 

Der obige Code ist ein Ausschnitt aus functionsreferenz / add_cap .