programing

Word press 사용자 지정 메뉴에 하위 메뉴

i4 2023. 2. 20. 23:55
반응형

Word press 사용자 지정 메뉴에 하위 메뉴

만들고 있는 워드프레스 플러그인에서는 서브메뉴 페이지가 있는 새로운 최상위 관리 메뉴를 만듭니다.제 코드는 다음과 같습니다.

add_menu_page('Eastview Custom', 'Eastview Custom', 5,"eastview-custom");
add_submenu_page("eastview-custom","GLS Lunch Orders","GLS Lunch",5,'glsLunch','glsLunch');

따라서 이 코드는 새로운 관리 메뉴인 "Eastview Custom"을 만듭니다.다음으로 Eastview Custom과 GLS Lunch의 2개의 서브링크를 추가합니다.문제는 "Eastview Custom"을 서브링크로 원하지 않는다는 것입니다.서브링크는 'GLS 런치'뿐입니다.어떻게 해야 할지 모르겠어요.도와주셔서 감사합니다!

고문서에 따르면

플러그인이 독자적인 톱 레벨 메뉴를 작성하는 상황에서는, 통상, 첫 번째 서브 메뉴에는 톱 레벨 메뉴와 같은 링크 타이틀이 있기 때문에, 그 링크는 복제됩니다.parent_slug 파라미터와 menu_slug 파라미터에 같은 값을 지정하여 add_submenu_page 함수를 처음 호출하면 링크 타이틀 중복을 피할 수 있습니다.

이 페이지에는 http://codex.wordpress.org/Adding_Administration_Menus#Sub-Menus 가 있습니다.

따라서 Codex에 따르면 다음과 같은 기능을 사용할 수 있습니다(사용자의 레벨 파라미터를 권장하지 않는 기능으로 대체하여 모두 작은 따옴표로 표준화했습니다).

add_menu_page('Eastview Custom', 'Eastview Custom', 'manage_options', 'my-top-level-handle');
add_submenu_page( 'my-top-level-handle', 'GLS Lunch Orders', 'GLS Lunch', 'manage_options', 'my-top-level-handle');

이제 당신은 이것이 Codex에 근거해서 작동한다고 생각할 것이다.-그렇지 않다.하위 메뉴 항목이 하나만 있기 때문에 하위 메뉴 항목이 표시되지 않습니다.다른 아이템을 추가하면 동작하는 것을 알 수 있습니다.

add_menu_page('Eastview Custom', 'Eastview Custom', 'manage_options', 'my-top-level-handle');
add_submenu_page( 'my-top-level-handle', 'GLS Lunch Orders', 'GLS Lunch', 'manage_options', 'my-top-level-handle');
add_submenu_page( 'my-top-level-handle', 'New Item', 'New item', 'manage_options', 'new-handle');

이것이 도움이 되기를 바랍니다, 단일 목록 항목에 대한 답을 찾을 수 없어서 유감입니다!

또는 메인 메뉴를 만든 후 하위 메뉴를 제거할 수 있습니다.

add_menu_page('Eastview Custom', 'Eastview Custom', 5,"eastview-custom");
add_submenu_page("eastview-custom","GLS Lunch Orders","GLS Lunch",5,'glsLunch','glsLunch');
remove_submenu_page("eastview-custom", "eastview-custom");

이 기능을 사용할 수 있습니다.

function custom_add_admin_menu_page($args = []) {
    $args = wp_parse_args($args, [
        'page_title' => '',
        'menu_title' => '',
        'capability' => 'manage_options',
        'function'   => false',
        'menu_slug'  => '',
        'icon_url'   => '',
        'position'   => 20,
    ]);
   add_menu_page(
        $args['page_title'],
        $args['menu_title'],
        $args['capability'],
        $args['menu_slug'],
        $args['function'],
        $args['icon_url'],
        $args['position']
    );

    add_action('admin_head', function () use ($args) {
        if (!$args['function']) {
            
            remove_submenu_page($args['menu_slug'], $args['menu_slug']);
        }
    }, 99);

}

다음과 같이 사용합니다.

custom_add_admin_menu_page([
    'page_title' => __('your page title', 'your domain'),
    'menu_title' => __('your menu title', 'your domain'),
    'menu_slug'  => 'your slug',
    'icon_url'   => 'dashicons-page',
    'position'   => 20,
]);

언급URL : https://stackoverflow.com/questions/11613597/wordpress-add-submenus-to-custom-menu

반응형