Wie entferne ich den Dashboard-Zugriff von bestimmten Benutzerrollen?

11

Ich möchte verhindern, dass bestimmte Benutzerrollen überhaupt auf das Dashboard http://www.openeye.net/wp-admin/ zugreifen . Ich habe Benutzerprofile auf eine neue Seite verschoben und neu gestaltet, die auf der Website angezeigt werden kann. Wie würde ich das machen?

Zach Shallbetter
quelle
Ich habe WooCommerce gebeten, das Setup zu ändern, damit Berechtigungen für ihren Teil des Menüs verwaltet werden können. Die Idee muss abgestimmt werden auf: https://ideas.woocommerce.com Bitte geben Sie maximal 3 Punkte, danke!
Stefan

Antworten:

23

So sperren Sie Abonnenten und Mitwirkende aus dem Administrator:

function wpse23007_redirect(){
  if( is_admin() && !defined('DOING_AJAX') && ( current_user_can('subscriber') || current_user_can('contributor') ) ){
    wp_redirect(home_url());
    exit;
  }
}
add_action('init','wpse23007_redirect');

Ich hoffe, das hilft. Alle Rollen geben dem Benutzer eine Funktion, die der Name dieser Rolle ist, sodass Sie einen beliebigen Rollennamen als Funktion verwenden können.

John P Bloch
quelle
Hervorragend, aber in der zweiten Zeile wird ein Syntaxfehler angezeigt.
Zach Shallbetter
Oh ok, es hängt mit dem Extra zusammen (nach ('DOING_AJAX')
Zach Shallbetter
Oh, Entschuldigung; das war beabsichtigt. Am Ende sollte noch einer schließen. Ich habe es der Antwort hinzugefügt.
John P Bloch
Gibt es einen Grund, warum dies mit dem Thema 2011 und dem Mitglieder-Plugin nicht funktioniert?
Zach Shallbetter
Dies scheint auf Netzwerkseiten nicht zu funktionieren. Irgendeine Idee warum?
Zach Shallbetter
1
//If User Roll is Subscriber, It can not login in Dashboard 
function wpse23007_redirect()
{
    if( is_admin() && !defined('DOING_AJAX') && current_user_can('subscriber') )
    {
        wp_logout();
        wp_redirect(home_url());
        exit;
    }
}
add_action('init','wpse23007_redirect');
Ganpat Rabari
quelle
0
 add_action('init', function(){

      $redirect = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : home_url( '/' );
      $user = wp_get_current_user();
      if ( !defined('DOING_AJAX') && in_array( 'subscriber', (array) $user->roles ) ) {

          wp_redirect($redirect);
          exit();
      }
});
Sudip
quelle