사용자의 관리자 패널을 사용자 정의해야합니다. 그렇다면 전체 관리자 메뉴를 어떻게 제거합니까? 메뉴 항목을 제거하지 말고 왼쪽 세로 메뉴 표시 줄을 완전히 제거하고 메뉴 디자인 (예 : CSS, 배경 등)을 포함하십시오. 비워지고 싶습니다.
CSS 해킹으로 할 수 있습니다. 그러나 나는 그것을하기 위해 후크를 사용하는 것을 선호합니다. 어떤 아이디어?
감사
사용자의 관리자 패널을 사용자 정의해야합니다. 그렇다면 전체 관리자 메뉴를 어떻게 제거합니까? 메뉴 항목을 제거하지 말고 왼쪽 세로 메뉴 표시 줄을 완전히 제거하고 메뉴 디자인 (예 : CSS, 배경 등)을 포함하십시오. 비워지고 싶습니다.
CSS 해킹으로 할 수 있습니다. 그러나 나는 그것을하기 위해 후크를 사용하는 것을 선호합니다. 어떤 아이디어?
감사
답변:
올바른 훅은 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' );
}
위의 두 가지 기능을 사용하는 왼쪽 메뉴의 스크린 샷 :
$GLOBALS['menu'] = array();
. 배열에 null을 제공하면 작업이 수행됩니다.
/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;
}
}
[업데이트]
질문에 대한 설명에 따라 동기 부여가 관리 영역을 브랜딩 하고 있음이 분명 해지는 경우, 여기에 내가 사용하는 4 가지 플러그인이 있습니다.
wp_enqueue_script()
하면 admin_enqueue_script
후크 와 함께 사용하는 것이 더 좋습니다 .
admin_head
.
내가 아는 유일한 후크 친화적 인 방법 remove_menu_page()
은 모든 단일 메뉴 항목에 사용하는 것입니다. 그럼에도 불구하고 왼쪽 막대 자체에서 어떤 일이 발생하는지 알 수 없습니다 (너비가 0px로 축소되는지 또는 무엇인지). 후크를 사용하더라도 어느 시점에서 메뉴 스타일 스타일의 나머지 부분을 정리하기 위해 관리자 스타일 시트를 큐에 넣기를 원한다고 상상해보십시오.
나는 이것을 할 때 조심할 것이다. 예를 들어 "설정"을 제거하면 "설정"메뉴에서 메뉴 페이지를 생성하는 플러그인에 연결할 수 없습니다. 일반적으로 메뉴를 완전히 제거하는 것이 얼마나 지속 가능한지 궁금합니다.
add_action( 'admin_menu', 'remove_admin_menus' );
function remove_admin_menus(){
global $menu;
$menu = array();
}
@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;
}
}