it-swarm.com.de

Wie füge ich dieser Funktion "remove_menu" einen weiteren Benutzer hinzu?

Ziemlich selbsterklärend. Wie fügt man dieser Funktion einen anderen Benutzer für functions.php hinzu, d. H. User2, dem andere Menüelemente als user1 angezeigt werden?

Ich habe versucht, eine andere if($current_user->user_login == 'user2')-Bedingung hinzuzufügen, aber kein Glück. Benutzer2 hat andere Administratorrechte, wenn dies wichtig ist. Grundsätzlich muss ich jedoch in der Lage sein, Benutzer1 eine Reihe von Menüelementen und Benutzer2 eine andere Reihe von Menüelementen anzuzeigen. Aber ich habe es versucht, und ich erhalte den Fehler "Ich kann einen zuvor deklarierten Fehler nicht erneut deklarieren" für die Menüfunktion.

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

    if($current_user->user_login == 'user1')
    {
        $restricted = array(
                            __('Links'),
                            __('Comments'),
                            __('Appearance'),
                            __('Plugins'),
                            __('Profile'),
                            __('Tools'),
                            __('Settings')
        );
        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');
2
markratledge

Warum nicht einfach ein weiteres hinzufügen, wenn?

function remove_menus(){
    global $menu;
    global $current_user;
    get_currentuserinfo();
   //check first user
    if($current_user->user_login == 'user1'){
        $restricted = array(
                            __('Links'),
                            __('Comments'),
                            __('Appearance'),
                            __('Plugins'),
                            __('Profile'),
                            __('Tools'),
                            __('Settings')
        );
        end ($menu);
        while (prev($menu)){
            $value = explode(' ',$menu[key($menu)][0]);
            if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
        }
    }
    //check second user
    if($current_user->user_login == 'user2'){
        $restricted = array(
                            __('Links'),
                            __('Comments'),
                            __('Appearance'),
                            __('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');

dieselbe Funktion, aber zwei verschiedene Benutzer erhalten unterschiedliche Menüs.

2
Bainternet

Hier ist - ein kleines Plugin, das ich geschrieben habe - das funktioniert und getestet wird.

Sie können es einfach hochladen und mit der folgenden Funktion in Ihrer functions.php -Datei testen:

Wie man

# Add a user to a user group from inside your functions.php file
function test_me( $user_group_A )
{
    $user_group_A[] = 'Take your own name for testing';

    return $user_group_A;
}
add_filter( 'user_group_A', 'test_me' );

Anmerkungen

Das Hinzufügen eines (oder mehrerer) Benutzer zu einer der Gruppen ist so einfach wie oben dargestellt. Das Ändern der Menüelementgruppen ist nahezu identisch. Behandeln Sie diese Arrays einfach in Ihren Themenfunktionen.

2
kaiser

Können Sie Ihrer bedingten Logik nicht einfach eine or hinzufügen?

if( $current_user->user_login == 'user1' || $current_user->user_login == 'user2' )

Oder noch besser, verwenden Sie einfach ein Array, damit es einfacher zu aktualisieren ist.

Vor der oben erwähnten Zeile if ..

$_menu_remove_users = array( 'user1', 'user2' ); 

Ersetzen Sie dann die vorhandene if-Bedingung durch ..

if( in_array( $current_user->user_login, $_menu_remove_users ) )

Sie können das Array dann nach Bedarf aktualisieren, ohne die bedingte Logik neu schreiben zu müssen.

2
t31os

Es sieht so aus, als ob Sie versuchen, bestimmte Menüelemente für bestimmte Benutzer auszublenden. Sie können dies tun, indem Sie Rollen und Funktionen verwenden, anstatt Benutzernamen fest zu codieren und das Menü zu entfernen Artikel. Mit dem Capsman Plugin können Sie flexibel Berechtigungen für Administratoren- und Editorrollen festlegen und sogar neue definieren. Wenn ein Benutzer keine Berechtigung zum Anzeigen der Seite "Einstellungen" hat, werden die Admin-Links von WordPress entfernt.

1
Tom

Sie können auch das Plugin Adminimize verwenden. Mit diesem Plugin können Sie Menüs für verschiedene Rollen einfach ausblenden. auch benutzerdefinierte Rollen. Vielleicht ist es einfacher als benutzerdefinierter Code, wenn Sie dies mögen.

0
bueltge