Yönetici menüsünün tamamı nasıl kaldırılır?


14

Kullanıcı için yönetici panelini özelleştirmem gerekiyor. Peki, yönetici menüsünün tamamını nasıl kaldırabilirim? Menü öğesini kaldırmayın, yani sol dikey menü çubuğunu tamamen kaldırın, menünün tasarımını ekleyin (örn. Css, background..etc). Boş olmasını istiyorum.

Bunu css hack ile yapabilirim. Ama bunu yapmak için kanca kullanmayı tercih ederim. Herhangi bir fikir?

Teşekkürler


Merak ediyorum. Kullanıcılarınızın yönetici menü öğelerinden herhangi birine erişmesi gerekmiyorsa, neden kontrol paneline erişmeleri gerekir?
moraleida

Güdüleri merak ediyorum ... Belirli roller / kullanıcılar için gizlemek ister misiniz? Özel bir Yönetici Çubuğu menüsü oluşturuyor musunuz (üstte)?
brasofilo

1
Evet, yönetici menüsünü özelleştirmek istiyorum. Geçerli yönetici menüsü yeterince iyi değil, sadece 'wordpress' hissediyorum. Bence markalaşma için iyi değil.
dev-jim

Lütfen önceki cevabımı buradan kontrol edin; wordpress.stackexchange.com/questions/136058/…
numediaweb

Yanıtlar:


16

Kullanılacak doğru kanca admin_menuve kaldırmak istediğiniz menüleri kaldırmak için bir işlev oluşturmaktır. Aşağıdaki 2 işlev tüm menüleri kaldırır.

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' );
}

Yukarıdaki 2 işlevi kullanarak sol menünün ekran görüntüsü:

resim açıklamasını buraya girin


3
Kullanarak başka bir yol buldum $GLOBALS['menu'] = array();. Dizide null değeri vermek de işi yapar.
dev-jim

Bunu nereye koydun?

Bu ekran görüntüsünden son taslakları fark eden var mı? ;)
acSlater

5

Öncülüğünde /wp-admin/admin-header.php-> /wp-admin/menu-header.phpbunu yapmak için hiçbir kanca var.

Bir çözüm admin_headtakmak ve bazı CSS + jQuery yapmaktır

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;
    }
}

[güncelleme]
Motivasyonun yönetici alanını markalaştırdığı açık olan soruya yapılan açıklamaya göre , bunlar için kullandığım 4 eklenti:


Bu rotaya giderseniz, kanca wp_enqueue_script()ile kullanmak daha mantıklıdır admin_enqueue_script.
mrwweb

1
@mrwweb Bu kadar küçük bir ekleme olsa bile? Sence değerli mi?
Brasofilo

Kabul. Küçük betik / stil ekleme işlemleri daha kolay yapılır admin_head.
chrisguitarguy

Başka seçeneğim olmadığı sürece jquery kullanmayı sevmiyorum. Ziyaretçiler tarayıcılarındaki javascript'i devre dışı bırakırsa ne olur? Yine de, olma olasılığı yoktur, ancak orada bir olasılık vardır. Neyse tavsiye için teşekkürler.
dev-jim

Örneğimde, CSS'deki 2 div'i de gizleyerek çift kaldırma sorunu olacak.
brasofilo

2

Bildiğim tek kanca dostu yol remove_menu_page(), her bir menü öğesi için kullanmaktır . O zaman bile, sol çubuğun kendisine ne olduğunu bilmiyorum (0px genişliğine ya da neye düşeceğini). Kancaları kullanırken bile, bir noktada menü işaretleme stillerinden kalanları temizlemek için bir yönetici stil sayfası sıralamak isteyeceğinizi hayal ediyorum.

Bunu yaparken dikkatli olurdum. Örneğin, "Ayarlar" ı kaldırırsanız, "Ayarlar" menüsünde menü sayfaları oluşturan eklentilere erişilemez. Genel olarak, menüyü tamamen kaldırmanın ne kadar sürdürülebilir olduğunu merak ediyorum.


Eminim yöneticileri değil, normal kullanıcılar için menüyü kaldırmak için bir yol arıyordum. :)
Christine Cooper

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

function remove_admin_menus(){
    global $menu;
    $menu = array();
}

Bu cevap da çok kullanışlı. Kısa ve eklentiler tarafından oluşturulan menü sayfaları dışında bir cazibe gibi çalışır. (bu sadece bir yönetici tarafından görülebildiği için sorun olmamalı)
Charles

Gerçekten kullanışlı bir çözümdür, ancak aslında bu yönetici sayfalarına erişimi engellemeyeceğini, sadece yönetici çubuğunda görünmez hale getireceğini söylemeye değer. Elbette öğeleri gizlemek için bir CSS çözümünden daha iyidir, ancak güvenlik açısından hala kusurludur: meraklı kullanıcılar URL'yi düzenleyerek yönetici sayfalarına doğrudan erişebilirler.
Marcos Buarque

0

Ben küçük bir hata var @brasofilo çözümünü geliştirmek - en iyi internet bağlantısı menüsü ile sayfa yeniden yükleme çok kısa bir süre için görünecektir. Bunu önlemek için biraz daha css ekledim:

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;

    }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.