it-swarm.com.de

Admin-Menüs pro Rolle in Wordpress ausblenden

Ich versuche, eine bestimmte Anzahl von Menüs für einen Kunden auszublenden. Im Moment benutze ich den folgenden Code und er macht seine Arbeit gut, aber er entfernt ihn für alle, soweit ich das beurteilen kann. Wie in allen Rollen.

function remove_menus () {
global $menu;
    $restricted = array(__('Dashboard'), __('Media'), __('Links'),      __('Appearance'), __('Tools'), __('Users'), __('Settings'), __('Profile'),__('Plugins'));
    end ($menu);
    while (prev($menu)){
        $value = explode(' ',$menu[key($menu)][0]);
        if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
    }
}
add_action('admin_menu', 'remove_menus');

Was ist die Zeile, die ich verwenden würde, um diesen Anruf nur einen Herausgeber oder einen Autor usw. zu haben?

Vielen Dank

2
user3218

wenn Sie dies tun, wird das Menü ausgeblendet (das ist alles, sie können immer noch auf die Menü-URL zugreifen, wenn sie es wissen), basierend auf den Fähigkeiten. Sie können es leicht in eine Rolle oder sogar einen Benutzernamen ändern.

Ich denke, die Benutzerrolle ist "user_role" und für den Benutzernamen "user_login". Im folgenden Beispiel wird "user_level" von 10 verwendet, was bedeutet, dass alle außer dem Administrator angemeldet sind.

function remove_menus()
{
    global $menu;
    global $current_user;
    get_currentuserinfo();

    if($current_user->user_level < 10)
    {
        $restricted = array(__('Pages'),
                            __('Media'),
                            __('Links'),
                            __('Custom Post Name'),
                            __('Comments'),
                            __('Appearance'),
                            __('Plugins'),
                            __('Users'),
                            __('Tools'),
                            __('Settings'),
                            __('Posts'),

        );
        end ($menu);
        while (prev($menu)){
            $value = explode(' ',$menu[key($menu)][0]);
            if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
        }// end while

    }// end if
}
add_action('admin_menu', 'remove_menus');
4
Wyck

Verwenden Sie die Funktion current_user_can(), um dieses $restricted-Array in Teilen zu erstellen, bevor Sie es durch diese nicht gesetzte Schleife führen. Sie müssen Funktionen und keine Rollennamen verwenden, damit dies funktioniert.

2
Jason Rhodes

Wenn es Ihnen nichts ausmacht, ein Plugin anstelle von Hardcode zu verwenden, versuchen Sie Folgendes:

http://wordpress.org/extend/plugins/adminimize/

Ich benutze es für alle Sites, die ich erstelle, um die verschiedenen Rollen anzupassen. Es gibt Ihnen eine Menge Optionen und nicht nur in den Menüs.

1
Tafts