Como remover todo o menu do administrador?

14

Preciso personalizar o painel de administração para o meu usuário. Então, como faço para remover todo o menu do administrador? Não remova o item do menu, quero dizer, remova completamente a barra vertical esquerda do menu, inclua o design do menu (por exemplo, css, background..etc). Eu quero que fique em branco.

Eu posso fazer isso por css hack. Mas eu prefiro usar o hook para fazer isso. Alguma ideia?

obrigado

dev-jim
fonte
Estou curioso. Se seus usuários não precisam acessar nenhum dos itens de menu do administrador, por que eles precisam acessar o painel?
Moraleida 15/05
Pensando nos motivos ... Deseja ocultá-lo para papéis / usuários específicos? Você está criando um menu personalizado da Barra de administração (na parte superior)?
Brasofilo 15/05
1
Sim, gostaria de personalizar o menu do administrador. Não que o menu atual do administrador não seja bom o suficiente, apenas sinta o "wordpress". Não é bom para a marca, na minha opinião.
Dev-jim
Por favor, verifique minha resposta anterior aqui; wordpress.stackexchange.com/questions/136058/…
numediaweb

Respostas:

16

O gancho correto a ser usado é admin_menue, em seguida, crie uma função para remover os menus que você deseja remover. As 2 funções a seguir removem todos os menus.

add_action( 'admin_menu', 'remove_admin_menus' );
add_action( 'admin_menu', 'remove_admin_submenus' );

//Remove top level admin menus
function remove_admin_menus() {
    remove_menu_page( 'edit-comments.php' );
    remove_menu_page( 'link-manager.php' );
    remove_menu_page( 'tools.php' );
    remove_menu_page( 'plugins.php' );
    remove_menu_page( 'users.php' );
    remove_menu_page( 'options-general.php' );
    remove_menu_page( 'upload.php' );
    remove_menu_page( 'edit.php' );
    remove_menu_page( 'edit.php?post_type=page' );
    remove_menu_page( 'themes.php' );
}


//Remove sub level admin menus
function remove_admin_submenus() {
    remove_submenu_page( 'themes.php', 'theme-editor.php' );
    remove_submenu_page( 'themes.php', 'themes.php' );
    remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=post_tag' );
    remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=category' );
    remove_submenu_page( 'edit.php', 'post-new.php' );
    remove_submenu_page( 'themes.php', 'nav-menus.php' );
    remove_submenu_page( 'themes.php', 'widgets.php' );
    remove_submenu_page( 'themes.php', 'theme-editor.php' );
    remove_submenu_page( 'plugins.php', 'plugin-editor.php' );
    remove_submenu_page( 'plugins.php', 'plugin-install.php' );
    remove_submenu_page( 'users.php', 'users.php' );
    remove_submenu_page( 'users.php', 'user-new.php' );
    remove_submenu_page( 'upload.php', 'media-new.php' );
    remove_submenu_page( 'options-general.php', 'options-writing.php' );
    remove_submenu_page( 'options-general.php', 'options-discussion.php' );
    remove_submenu_page( 'options-general.php', 'options-reading.php' );
    remove_submenu_page( 'options-general.php', 'options-discussion.php' );
    remove_submenu_page( 'options-general.php', 'options-media.php' );
    remove_submenu_page( 'options-general.php', 'options-privacy.php' );
    remove_submenu_page( 'options-general.php', 'options-permalinks.php' );
    remove_submenu_page( 'index.php', 'update-core.php' );
}

Captura de tela do menu esquerdo usando as 2 funções acima:

insira a descrição da imagem aqui

Chris_O
fonte
3
Eu encontrei outra maneira usando $GLOBALS['menu'] = array();. Dar nulo na matriz também fará o trabalho.
Dev-jim 15/05
Onde você coloca isso?
Alguém notou os rascunhos recentes dessa captura de tela? ;)
acSlater
5

Seguindo o exemplo de /wp-admin/admin-header.php-> /wp-admin/menu-header.phpnão há gancho para fazê-lo.

Uma solução é conectar admin_heade executar algumas CSS + jQuery

add_action('admin_head', 'wpse_52099_script_enqueuer');
function wpse_52099_script_enqueuer(){
    if(!current_user_can('administrator')) {
        echo <<<HTML
        <style type="text/css">
        #wpcontent, #footer { margin-left: 0px; }
        </style>
        <script type="text/javascript">
        jQuery(document).ready( function($) {
            $('#adminmenuback, #adminmenuwrap').remove();
        });     
        </script>
HTML;
    }
}

[atualização]
De acordo com um esclarecimento à pergunta, onde fica claro que a motivação é marcar a área administrativa, estes são os 4 plug-ins que eu uso para isso:

brasofilo
fonte
Se você seguir esse caminho, faz mais sentido usar wp_enqueue_script()com o admin_enqueue_scriptgancho.
Mrwweb
1
@mrwweb Mesmo quando é uma inserção tão pequena? Você acha que vale a pena?
Brasofilo 15/05
Acordado. Pequenas inserções de script / estilo são mais fáceis de fazer admin_head.
Chrisguitarguy
Não gosto de usar o jquery, a menos que não tenha outra escolha. E se os visitantes desabilitarem o javascript no navegador? Porém, não é provável que isso aconteça, mas existe a possibilidade. De qualquer forma, obrigado pelo conselho.
Dev-jim 15/05
No meu exemplo, será uma questão de dupla remoção, ocultando também as 2 divs em CSS.
Brasofilo 15/05
2

A única maneira fácil de usar que conheço é usar remove_menu_page()para cada item de menu. Mesmo assim, não sei o que acontece com a barra esquerda em si (se ela diminuiria para 0px de largura ou o que). Mesmo com o uso dos ganchos, imagino que em algum momento você deseje enfileirar uma folha de estilo de administrador para limpar o que resta dos estilos de marcação de menu.

Eu teria cuidado em fazer isso. Por exemplo, se você remover "Configurações", nenhum plug-in que crie páginas de menu no menu "Configurações" não poderá ser alcançado. Em geral, eu me pergunto como é realmente sustentável remover completamente o menu.

mrwweb
fonte
Tenho certeza de que ele estava procurando uma maneira de remover o menu para usuários regulares, não para administradores. :)
Christine Cooper
1
add_action( 'admin_menu', 'remove_admin_menus' );

function remove_admin_menus(){
    global $menu;
    $menu = array();
}
kakoma
fonte
Essa resposta também é muito útil. É curto e funciona como um encanto, exceto para as páginas de menu criadas por plugins. (que não deve ser um problema, porque eles só são visíveis para um administrador)
Charles
É uma solução prática, de fato, MAS vale a pena dizer que na verdade não bloqueará o acesso a essas páginas de administração, apenas as tornará invisíveis na barra de administração. É melhor do que uma solução CSS para ocultar itens, é claro, mas ainda é falha em termos de segurança: usuários experientes ainda podem obter acesso direto às páginas de administração editando o URL.
Marcos Buarque
0

Eu melhoro a solução do @brasofilo, pois é pequeno o erro - na página recarregar com o melhor menu de conexão com a Internet aparecerá por muito pouco tempo. Para evitá-lo, adicionei um pouco mais de css:

add_action('admin_head', 'wpse_52099_script_enqueuer');

function wpse_52099_script_enqueuer() {

    if(!current_user_can('administrator')) { 

echo <<<HTML
<style type="text/css">
#wpcontent, #footer { margin-left: 0px !important; }
#adminmenuback, #adminmenuwrap { display: none !important; }
</style>
<script type="text/javascript">
jQuery(document).ready( function($) {
    $('#adminmenuback, #adminmenuwrap').remove();
});
</script>
HTML;

    }
}
romapad
fonte