워드프레스 관리자 메뉴에서 모든 항목을 메뉴 숨김 처리 하려면, admin_menu
액션을 사용하고 remove_menu_page
함수로 각 메뉴 항목을 제거하면 됩니다.
아래의 코드는 워드프레스 관리자 메뉴 항목을 찾는 방법입니다.
admin_menu
액션을 사용하여 function print_admin_submenus() {
global $submenu;
echo '<pre>';
print_r($submenu);
echo '</pre>';
}
add_action('admin_notices', 'print_admin_submenus');
코드를 입력하면 현재 어떤 메뉴를 사용하는지 알 수 있습니다.
위의 자료를 토대로 서브 메뉴 페이지를 숨김처리하려면 다음과 같이 진행합니다.
function hide_admin_submenus() {
// '글' 아래의 '새 글 작성' 서브메뉴 숨기기
remove_submenu_page('edit.php', 'post-new.php');
// '모양' 아래의 '위젯' 서브메뉴 숨기기
remove_submenu_page('themes.php', 'widgets.php');
// '모양' 아래의 '테마 편집기' 서브메뉴 숨기기
remove_submenu_page('themes.php', 'theme-editor.php');
// 추가적인 서브메뉴 항목을 숨기려면 위의 패턴대로 코드를 더 추가하세요.
}
add_action('admin_menu', 'hide_admin_submenus');
서브메뉴를 숨기는 방법입니다.
정확히는 제거하는 방법이라 할 수 있겠습니다.
function hide_all_admin_menus() {
// 대시보드
remove_menu_page('index.php');
// 글
remove_menu_page('edit.php');
// 미디어
remove_menu_page('upload.php');
// 페이지
remove_menu_page('edit.php?post_type=page');
// 댓글
remove_menu_page('edit-comments.php');
// 테마
remove_menu_page('themes.php');
// 플러그인
remove_menu_page('plugins.php');
// 사용자
remove_menu_page('users.php');
// 도구
remove_menu_page('tools.php');
// 설정
remove_menu_page('options-general.php');
}
add_action('admin_menu', 'hide_all_admin_menus');
이 코드를 워드프레스의 functions.php
파일에 추가하면, 관리자 메뉴의 대부분의 항목이 삭제됩니다.
가장 좋은 방법은 위의 방
function move_posts_to_settings_menu() {
// "글" 메뉴 제거
remove_menu_page('edit.php');
// "설정" 메뉴 아래에 "글" 서브메뉴 추가
add_submenu_page(
'options-general.php', // 부모 메뉴 slug
__('글', 'textdomain'), // 페이지 제목
__('글', 'textdomain'), // 메뉴 제목
'manage_options', // 권한
'edit.php' // 파일
);
}
add_action('admin_menu', 'move_posts_to_settings_menu');
이 함수는 edit.php 파일을 수정하는 방법을 제시합니다.
원래 있던 위치에서 메뉴를 삭제하고 새로운 위치에서 메뉴를 생성한 뒤 링크를 연결시키는 방법입니다.
<?php
add_action('admin_menu', 'custom_admin_menu');
function custom_admin_menu() {
// JSON 파일 로드
$json = file_get_contents('path_to_your_json_file.json'); // JSON 파일 경로를 지정해주세요.
$menus = json_decode($json, true);
// 모든 메뉴 항목 제거
global $menu;
$menu = array();
foreach ($menus as $menu_key => $menu_data) {
// 메인 메뉴 항목 추가
add_menu_page(
$menu_data['defaults']['menu_title'],
$menu_data['defaults']['menu_title'],
isset($menu_data['required_capability_read_only']) ? $menu_data['required_capability_read_only'] : 'read',
$menu_data['defaults']['file'],
'',
isset($menu_data['defaults']['icon_url']) ? $menu_data['defaults']['icon_url'] : '',
$menu_data['position']
);
// 서브메뉴 항목들 추가
if (isset($menu_data['items']) && is_array($menu_data['items'])) {
foreach ($menu_data['items'] as $submenu_data) {
add_submenu_page(
$submenu_data['defaults']['parent'],
$submenu_data['defaults']['menu_title'],
$submenu_data['defaults']['menu_title'],
isset($submenu_data['required_capability_read_only']) ? $submenu_data['required_capability_read_only'] : 'read',
$submenu_data['defaults']['url']
);
}
}
}
}
?>
이 코드를 워드프레스의 테마 functions.php
파일에 추가하거나 플러그인 형태로 구성할 수 있습니다. 또한 JSON 파일의 경로(path_to_your_json_file.json
)를 실제 경로로 변경해주세요.
참고로, 이 코드는 주어진 JSON 형식에만 동작하므로 JSON의 구조나 내용이 변경되면 코드도 수정해야 합니다.