Verstecken Sie das obere Admin-Panel für Nicht-Admin- und Nicht-Editoren

So kam ich zu drei möglichen Lösungen für diese Frage und kann nicht entscheiden, was besser ist. Was ist deine Meinung?

Erste Lösung:

if ( ( in_array('administrator', userdata('role')) || in_array('editor', userdata('role')) ) == false) { add_filter('show_admin_bar', '__return_false'); } 

Das Zweite:

 if( ( current_user_can('editor') || current_user_can('administrator') ) == false ) { add_filter('show_admin_bar', '__return_false'); } 

Dritte:

 $allowed_roles = array('editor', 'administrator'); if( array_intersect($allowed_roles, userdata('role') ) == false ) { add_filter('show_admin_bar', '__return_false'); } 

Benutzerdatenfunktion:

 function userdata($userdata){ $userinfo = wp_get_current_user(); if ($userdata == 'nick') return $userinfo ->user_login; if ($userdata == 'mail') return $userinfo ->user_email; if ($userdata == 'id') return $userinfo ->ID; if ($userdata == 'role') return $userinfo ->roles; else return 'Eror'; } 

Ich stimme für die dritte Lösung.

Solutions Collecting From Web of "Verstecken Sie das obere Admin-Panel für Nicht-Admin- und Nicht-Editoren"

Das ist was ich benutze;

 add_action('init', 'blockusers_init'); function blockusers_init() { if (is_admin() && !current_user_can('administrator') && !(defined('DOING_AJAX') && DOING_AJAX)) { wp_redirect(home_url()); exit; } } 

Es ist möglich, der Beste.

EDIT: Sie benötigen eine benutzerdefinierte Login-Seite für erreichen wp-admin . Dieser Code leitet zur Startseite um, wenn Sie direkt zu wp-admin .

Die erste Methode ist ineffizient, da sie die userdata function zweimal userdata , aber das ist leicht zu userdata :

 $roles = userdata('role'); if ( ( in_array('administrator', $roles) || in_array('editor', $roles) ) == false ) { add_filter('show_admin_bar', '__return_false'); } 

Die dritte Methode macht jedoch im Wesentlichen das Gleiche besser.

Die zweite Methode verwendet current_user_can , was bei der Überprüfung von Rollen gemäß der Dokumentation unzuverlässig ist.

Wenn Sie sich jedoch der Fähigkeiten bewusst sind, die verschiedene Rollen jetzt oder in Zukunft haben, können Sie Folgendes tun:

 if( !current_user_can('edit_others_posts') ) { add_filter('show_admin_bar', '__return_false'); } 

Standardmäßig verfügen nur Administratoren und Editoren über diese function. Wenn Sie also nach dieser Option suchen, erfahren Sie, was Sie wissen müssen, wenn der Standardwert sicher verwendet wird.