webentwicklung-frage-antwort-db.com.de

current_user_can ('Administrator') gibt in Multisite nicht true zurück, wenn der Benutzer Administrator, aber NICHT Super Admin ist

Ich habe eine mehrseitige WordPress-Installation eingerichtet und einen Benutzer, der auf beiden Sites eine Administratorrolle hat. Die Funktion current_user_can('Administrator') gibt jedoch nicht true zurück, wenn sie angemeldet ist, was ich erwartet habe.

Mein Benutzerkonto ist jedoch auf beiden Sites ein "Administrator" und auch ein "Super-Administrator" im Netzwerk, und der Anruf wird für mich als "wahr" zurückgegeben.

Warum ist das? Sollte der erste Benutzer nicht nur falsch sein, wenn nach "Super Admin" und nicht nur nach "Administrator" gesucht wird?

Gibt es eine andere Möglichkeit, um zu überprüfen, ob ein Benutzer auf die Rolle "Administrator" festgelegt ist, ohne ein "Super-Administrator" zu sein?

1
Blake Mann

Ich stimme zu, dass current_user_can ('Administrator') für den Benutzer true zurückgeben sollte. Current_user_can soll jedoch in erster Linie nach Funktionen suchen. Dies ist im Allgemeinen eine robustere Prüfung.

Ich würde so etwas vorschlagen (ungetestet):

if ( current_user_can( 'activate_plugins' ) && ! current_user_can( 'update_core' ) ) {
//...
}

Dies prüft also, ob der aktuelle Benutzer Plugins aktivieren kann, aber Core nicht aktualisieren kann. Dies sollte für Administratoren true und für Netzwerkadministratoren false zurückgeben, da update_core auf mehreren Sites für Netzwerkadministratoren reserviert ist.

1
vancoder

Ihr Ausdruck enthält einen Tippfehler. Verwenden Sie current_user_can('administrator') anstelle von current_user_can('Administrator') (a anstelle von A).

3
dvp