Cum să elimini complet meniul de administrare WordPress?

14 mai 2012, 20:38:07
Vizualizări: 20.9K
Voturi: 14

Am nevoie să personalizez panoul de administrare pentru utilizatorul meu. Cum pot elimina complet meniul de administrare? Nu mă refer doar la eliminarea elementelor din meniu, ci la eliminarea completă a barei verticale din stânga, inclusiv designul meniului (de exemplu, css, fundal etc). Vreau să rămână complet gol.

Pot face acest lucru prin hack-uri CSS. Dar prefer să folosesc hook-uri pentru asta. Aveți idei?

Mulțumesc

4
Comentarii

Sunt curios. Dacă utilizatorii tăi nu au nevoie de acces la niciunul dintre elementele din meniul de administrare, de ce au nevoie de acces la panoul de control?

moraleida moraleida
15 mai 2012 04:35:02

Mă întreb care sunt motivele... Vrei să-l ascunzi pentru anumite roluri/utilizatori? Creezi un meniu personalizat în Bara de Administrare (sus)?

brasofilo brasofilo
15 mai 2012 04:49:53

Da, aș dori să personalizez meniul de administrare. Nu că meniul actual nu este suficient de bun, dar are un aer prea 'wordpress'. Nu este bun pentru branding, în opinia mea.

dev-jim dev-jim
15 mai 2012 14:05:43

Te rog să verifici răspunsul meu anterior aici; http://wordpress.stackexchange.com/questions/136058/how-to-remove-admin-menu-pages-inserted-by-plugins/160523#160523

numediaweb numediaweb
7 sept. 2014 18:46:32
Toate răspunsurile la întrebare 5
2
16

Hook-ul corect de utilizat este admin_menu, apoi creați o funcție pentru a elimina meniurile pe care doriți să le eliminați. Următoarele 2 funcții elimină toate meniurile.

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

// Elimină meniurile principale din panoul de administrare
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' );
}


// Elimină submeniurile din panoul de administrare
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' );
}

Captură de ecran cu meniul din stânga folosind cele 2 funcții de mai sus:

Meniul WordPress după eliminarea elementelor

15 mai 2012 06:09:22
Comentarii

Am găsit o altă metodă folosind $GLOBALS['menu'] = array();. Dacă trecem null în array, va funcționa la fel.

dev-jim dev-jim
15 mai 2012 14:13:05

Unde pui asta?

User User
17 iul. 2013 17:22:50
6

Urmând exemplul /wp-admin/admin-header.php -> /wp-admin/menu-header.php nu există niciun hook pentru a face acest lucru.

O soluție este să folosești hook-ul admin_head și să aplici niște 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;
    }
}

[actualizare]
După o clarificare a întrebării, unde devine clar că motivul este branding-ul zonei de administrare, acestea sunt cele 4 plugin-uri pe care le folosesc pentru asta:

  • Adminimize (ascunde părți mari din interfața WordPress, filtrând după rol)
  • Ozh' Admin Drop Down Menu (tot meniul de administrare într-un meniu drop-down orizontal bazat pe CSS)
  • Admin Menus Fixed (companion perfect pentru Ozh's)
  • Admin Tweaks (eu sunt autorul acestuia, iar scopul său principal este personalizarea multor zone din interfața de administrare)
15 mai 2012 04:42:04
Comentarii

Dacă alegi această cale, are mai mult sens să folosești wp_enqueue_script() cu hook-ul admin_enqueue_script.

mrwweb mrwweb
15 mai 2012 04:55:30

@mrwweb Chiar și atunci când este o inserție atât de mică? Crezi că merită?

brasofilo brasofilo
15 mai 2012 05:01:37

De acord. Inserțiile mici de scripturi/stiluri se fac mai ușor cu admin_head.

chrisguitarguy chrisguitarguy
15 mai 2012 06:18:32

Nu-mi place să folosesc jQuery decât atunci când nu am altă opțiune. Ce se întâmplă dacă vizitatorii dezactivează JavaScript în browser? Deși este puțin probabil să se întâmple, posibilitatea există. Oricum, mulțumesc pentru sfat.

dev-jim dev-jim
15 mai 2012 14:10:46

În exemplul meu, va fi vorba despre o eliminare dublă prin ascunderea celor 2 div-uri și în CSS.

brasofilo brasofilo
15 mai 2012 15:06:13

Asta este minunat. Pentru completare, trebuie să eliminăm marginile adăugate în stânga când dimensiunea ecranului este mai mică. Deci, în partea de CSS, adăugați: .auto-fold #wpcontent, .auto-fold #wpfooter {margin-left: 0;}

Christine Cooper Christine Cooper
5 mai 2015 18:40:10
Arată celelalte 1 comentarii
1

Singura metodă prietenoasă cu hook-uri pe care o cunosc este să folosești remove_menu_page() pentru fiecare element de meniu în parte. Chiar și așa, nu știu ce se întâmplă cu bara din stânga în sine (dacă s-ar micșora la o lățime de 0px sau ceva similar). Chiar și folosind hook-urile, îmi imaginez că la un moment dat vei dori să încarci o foaie de stil pentru administrare pentru a curăța ceea ce rămâne din stilurile de markup ale meniului.

Aș fi precaut în legătură cu realizarea acestui lucru. De exemplu, dacă elimini "Setări", atunci orice plugin care creează pagini de meniu în meniul "Setări" nu va mai putea fi accesat. În general, mă întreb cât de sustenabil este să elimini complet meniul.

14 mai 2012 21:40:48
Comentarii

Sunt sigur că el căuta o modalitate de a elimina meniul pentru utilizatorii obișnuiți, nu pentru administratori. :)

Christine Cooper Christine Cooper
18 mar. 2015 17:56:44
2
add_action( 'admin_menu', 'remove_admin_menus' );

/**
 * Elimină toate meniurile din panoul de administrare WordPress
 * Atenție: Această funcție va elimina TOATE meniurile, inclusiv cele esențiale
 */ 
function remove_admin_menus(){
    global $menu;
    $menu = array();
}
16 apr. 2016 07:13:21
Comentarii

Acest răspuns este foarte util de asemenea. Este scurt și funcționează perfect, cu excepția paginilor de meniu create de pluginuri. (ceea ce nu ar trebui să fie o problemă, deoarece acestea sunt vizibile doar pentru administrator)

Charles Charles
26 apr. 2018 16:39:33

Este într-adevăr o soluție utilă, DAR merită menționat că nu va bloca efectiv accesul la acele pagini de administrare, ci doar le va face invizibile în bara de administrare. Este mai bună decât o soluție CSS pentru ascunderea elementelor, desigur, dar totuși imperfectă din punct de vedere al securității: utilizatorii avansați pot încă accesa direct paginile de administrare prin editarea URL-ului.

Marcos Buarque Marcos Buarque
9 iun. 2018 17:47:53
0

Am îmbunătățit soluția lui @brasofilo deoarece avea o mică eroare - la reîncărcarea paginii cu o conexiune la internet nu prea bună, meniul va apărea pentru o perioadă foarte scurtă de timp. Pentru a evita acest lucru, am adăugat puțin mai mult 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;

    }
}
30 mai 2016 22:29:02