web-dev-qa-db-ja.com

全体管理メニューを削除するには?

自分のユーザー用に管理パネルをカスタマイズする必要があります。それでは、どうすれば管理者メニュー全体を削除できますか?メニュー項目を削除しないでください、私は完全に左の縦のメニューバーを削除することを意味します、メニューのデザイン(例えばcss、background..etc)を含みます。空白にしたいのですが。

私はCSSハックでそれをすることができます。しかし私はそれをするためにフックを使うことを好みます。何か案は?

ありがとう

12
dev-jim

使用する正しいフックはadmin_menuであり、それから削除したいメニューを削除する関数を作成します。次の2つの機能はすべてのメニューを削除します。

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

上記2つの機能を使用した左メニューのスクリーンショット:

enter image description here

14
Chris_O

/wp-admin/admin-header.php - >/wp-admin/menu-header.phpの先頭にはフックがありません。

解決策はadmin_headをフックして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;
    }
}

[更新]
質問への明確化に従って、動機がbrandingadmin領域)であることが明らかになるところでは、これらは私がそのために使用する4つのプラグインです:

4
brasofilo

私が知っている唯一のフックにやさしい方法は、すべてのメニュー項目に remove_menu_page() を使うことです。それでも、私は左バー自体に何が起きるのか(それが0px幅まで縮小されるのかどうか、あるいは何が起こるのか)わかりません。フックを使用しても、メニューマークアップスタイルの残りの部分をクリーンアップするために管理者スタイルシートをエンキューすることが必要になると思います。

私はこれをやるように気をつけるでしょう。たとえば、「設定」を削除すると、「設定」メニューにメニューページを作成するプラグインにはアクセスできません。一般的に、メニューを完全に削除することがどれほど持続可能なのかと思います。

2
mrwweb
add_action( 'admin_menu', 'remove_admin_menus' );

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

私は@ brasofiloの解決法を改良しています。それは小さなバグがあるからです - ページのリロードで最良のインターネット接続メニューが表示されることは非常に短い時間になるでしょう。それを避けるために、もう少し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;

    }
}
0
romapad