programing

선택한 사용자 지정 관리 하위 메뉴를 수동으로 설정하는 방법은 무엇입니까?

magicmemo 2023. 9. 13. 22:30
반응형

선택한 사용자 지정 관리 하위 메뉴를 수동으로 설정하는 방법은 무엇입니까?

저는 제 첫 워드프레스 플러그인을 개발하고 있습니다.다음과 같은 관리 페이지가 있다고 가정해 보겠습니다.

  • 일반 설정
  • 새 공급업체 추가
  • 벤더
  • 공급업체 편집

여기서 메뉴에서 Edit Vendor를 표시하지 않고 Vendor 페이지의 링크를 사용하여 액세스할 수 있도록 설정합니다.내 메뉴 및 공급업체 페이지는 다음과 같습니다.enter image description here

메뉴를 생성하는 코드:

function nes_general_settings_view () { 
    require_once("views/admin/general_settings.php");
}

function nes_vendor_view () { 
    require_once("views/admin/vendor.php");
}

function nes_vendor_new_view () {
    require_once("views/admin/vendor_new.php");
}

function nes_vendor_edit_view () {

    require_once("views/admin/vendor_edit.php");
}

add_action("admin_menu", function () {
    add_menu_page(
        "Service",  
        "Service",  
        "manage_options",            
        "nes_general_settings",      
        "nes_general_settings_view", 
        null,                        
        4                            
    );

    add_submenu_page( "nes_general_settings", "General Settings", "General Settings", 0, "nes_general_settings", "nes_general_settings_view");      
    add_submenu_page( "nes_general_settings", "Vendors", "Vendors", 0, "nes_vendor", "nes_vendor_view");
    add_submenu_page( "nes_general_settings", "New Vendor", "New Vendor", 0, "nes_vendor_new", "nes_vendor_new_view");
    add_submenu_page( "nes_fake_id", "Edit Vendor", "Edit Vendor", 0, "nes_vendor_edit", "nes_vendor_edit_view");       
});

공급업체 편집 페이지 링크를 생성하는 코드:

<a href="<?=admin_url("admin.php?page=nes_vendor_edit")?>">Edit</a>

그러나 공급업체 편집 페이지에 있으면 메뉴가 선택되지 않습니다.enter image description here

공급업체 편집에 있을 선택한 서비스 > 공급업체 하위 메뉴를 설정하는 방법?

하위 메뉴가 사용자 지정 게시 유형인 경우 사용자 지정 게시 유형을 생성할 때 정의한 슬러그로 "show_in_menu"의 사용자 지정 게시 유형 매개 변수를 설정하여 사용자 지정 메뉴의 하위 메뉴 항목으로 쉽게 정의할 수 있습니다.이렇게 하면 기본 메뉴 열기/닫기 및 관리 메뉴의 현재 하위 메뉴 항목이 강조 표시됩니다.

예를 들어,

/* ————————————————————————— */
/* Content Types Menu Item
/* ————————————————————————— */

add_menu_page(
    'Content Types',
    'Content Types',
    'manage_options',
    'custom-content', // menu slug
    'ds_create_new_submenu',
    'dashicons-editor-table',
    null
);

그런 다음 사용자 지정 게시물 유형에서 show_in_메뉴를 메뉴 슬러그와 일치하도록 정의합니다.

$args = array(
    'labels'                => $labels,
    'menu_icon'             => 'dashicons-format-status',
    'capability_type'       => 'manage_options',
    'show_in_menu'          => 'custom-content'
);

단순화를 위해 단축된 코드 예제

관리 메뉴에 적절한 클래스를 추가하려면 jQuery를 사용해야 합니다.

다음을 사용하여 스크립트를 인쇄합니다.

# Grab the slug to print only in this screen
$hook = add_submenu_page( 
    null, # better than fake id
    "Edit Vendor", 
    "Edit Vendor", 
    'manage_options', # IMPORTANT, don't use levels (0-9), they're deprecated
    "nes_vendor_edit", 
    function() {
        echo '<h1>nes_vendor_edit_view</h1>';
    }
);

add_action( "admin_footer-$hook", function()
{
    # http://stackoverflow.com/questions/5673269/what-is-the-advantage-of-using-heredoc-in-php
    echo <<<HTML
        <script type="text/javascript">
        jQuery(document).ready( function($) {
            $('#toplevel_page_nes_general_settings')
                .addClass('current wp-has-current-submenu wp-menu-open');
        });     
        </script>
HTML;
});

언급URL : https://stackoverflow.com/questions/23468919/how-to-manually-set-a-custom-admin-submenu-selected

반응형