web-dev-qa-db-fra.com

afficher différents menus d'administration pour différents rôles d'utilisateur

Comment puis-je montrer différents menus d'administrateur à différents rôles d'utilisateur.

je dois créer un nouvel utilisateur Héberger uniquement des utilisateurs

j'ai vu qu'il s'agit de la liste de menus par défaut de l'administrateur pour les rôles d'utilisateur par défaut

 enter image description here 

où puis-je savoir dans quel fichier php wordpress ces menus sont assignés par code? Puis-je remplacer les menus par code?

1
neeraj

Les éléments de menu sont liés aux capacités. Un aperçu bon peut être trouvé ici . Par exemple, si vous n'avez pas la capacité edit_posts, l'élément de menu "Messages" n'apparaîtra pas.

Comment les éléments de menu sont-ils liés aux capacités? En règle générale: Si vous enregistrez un élément de menu à l’aide de add_menu_page() ou add_submenu_page() , vous devez indiquer à WordPress à quel accès les utilisateurs peuvent accéder à cette page et la voir. le menu.

Si vous souhaitez approfondir les fonctionnalités liées aux éléments de menu par défaut, vous pouvez parcourir le code source.

Vous pouvez également utiliser ce petit script, qui vous donne un aperçu de votre menu actuel et des capacités attachées. Il ne devrait être utilisé que pour des raisons de développement et, bien sûr, il peut être amélioré, mais vous obtenez l’idée générale:

add_action( 'in_admin_footer', function() {

    global $menu, $submenu;
    echo '<p>Menu:</p><table class="table widefat">';
    echo '<tr><th>Name</th><th>Slug</th><th>Capability</th>';
    foreach ( $menu as $key => $item ) {
        echo '<tr><td>' . esc_html( $item[0] ) . '</td><td>' . esc_html( $item[2] ) . '</td><td><td>' . esc_html( $item[1] ) . '</td><td></tr>';
    }
    echo '</table>';
    echo '<p>Submenu:</p><table class="table widefat">';
    echo '<tr><th>Name</th><th>Slug</th><th>Capability</th>';
    foreach ( $submenu as $index => $subsub ) {
        foreach ( $subsub as $key => $item ) {
            echo '<tr><td>' . esc_html( $item[0] ) . '</td><td>' . esc_html( $item[2] ) . '</td><td><td>' . esc_html( $item[1] ) . '</td><td></tr>';
        }

    }
    echo '</table>';
});

Ainsi, si vous créez un nouveau rôle utilisateur, vous pouvez leur attribuer des fonctionnalités. Vous pouvez également décider si un rôle utilisateur spécifique doit voir l'élément de menu "Modifier la publication" ou non. Vous pouvez trouver une instruction détaillée pour ajouter des rôles et des capacités d’utilisateur dans le WordPress Codex .

Si vous souhaitez supprimer un élément de menu spécifique, mais que vous souhaitez tout de même accorder à l'utilisateur la fonctionnalité principale, vous pouvez utiliser remove_menu_page() . Par conséquent, vous devez connaître le slug de l'élément de menu que vous souhaitez supprimer. Cet exemple supprimerait l'élément "Plugins" du menu:

add_action( 'admin_menu', function(){
    remove_menu_page( 'plugins.php' );
});
1
websupporter