워드프레스 메뉴 숨김 및 이동 방법 3가지

|

요약

워드프레스 관리자 메뉴에서 모든 항목을 메뉴 숨김 처리 하려면, admin_menu 액션을 사용하고 remove_menu_page 함수로 각 메뉴 항목을 제거하면 됩니다.

아래의 코드는 워드프레스 관리자 메뉴 항목을 찾는 방법입니다.

  • 모든 코드는 활성화된 theme 폴더의 functions.php 에 추가하면 됩니다.
  • 워드프레스의 관리자 메뉴를 커스텀으로 관리하려면 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 파일을 수정하는 방법을 제시합니다.
원래 있던 위치에서 메뉴를 삭제하고 새로운 위치에서 메뉴를 생성한 뒤 링크를 연결시키는 방법입니다.

JSON 으로 메뉴 커스텀 하는 법

<?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의 구조나 내용이 변경되면 코드도 수정해야 합니다.

참조

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다