programing

워드 프레스 - 사용자 지정 게시물 유형에서 하위 메뉴 제거

itmemos 2023. 9. 14. 21:43
반응형

워드 프레스 - 사용자 지정 게시물 유형에서 하위 메뉴 제거

저는 태그 분류법을 지원하는 포트폴리오라는 이름의 커스텀 포스트 타입을 만들었습니다.

WP는 포스트 태그와 커스텀 포스트 타입 태그에 차이를 두지 않기 때문에 카테고리를 넣고 싶은 Taxonomy 메뉴 항목을 만들었습니다.메뉴와 하위 메뉴를 만들고, 게시물 메뉴에서 카테고리와 게시물 태그도 제거할 수 있었지만, 사용자 지정 게시물 유형 메뉴에서 게시물 태그를 제거하지 못했습니다.

노력했습니다.

remove_submenu_page( 'edit.php?post_type=portfolio', 'edit-tags.php?taxonomy=post_tag&post_type=portfolio' );

사용가능remove_submenu_page()- 하지만 가장 쉬운 방법은 글로벌 $submenu를 덤프하고 menu_submenu_submenu_submenu_submenu_submenu를 확인하는 것입니다.

global $submenu;
var_dump($submenu);

이렇게 하면 메뉴 배열이 제공되며, 최상위 키는 menu_slug이고, 그러면 중첩 배열의 요소 2에서 올바른 하위 menu_slug를 찾을 수 있습니다.

그래서 만약 내가 "my_events"라는 사용자 지정 게시물 유형을 가지고 있고, 그것에서 태그 메뉴를 제거하고 싶다면, 내 원래 메뉴 구조는 이렇게 보일 것입니다.

...
'edit.php?post_type=my_events' => 
    array
      5 => 
        array
          0 => string 'All Events' (length=10)
          1 => string 'edit_posts' (length=10)
          2 => string 'edit.php?post_type=my_events' (length=28)
      10 => 
        array
          0 => string 'Add New' (length=7)
          1 => string 'edit_posts' (length=10)
          2 => string 'post-new.php?post_type=my_events' (length=32)
      15 => 
        array
          0 => string 'Tags' (length=4)
          1 => string 'manage_categories' (length=17)
          2 => string 'edit-tags.php?taxonomy=post_tag&post_type=my_events' (length=55)
...

이를 통해 menu_slug가'edit.php?post_type=my_events'그리고 태그메뉴의 하위메뉴 슬러그는'edit-tags.php?taxonomy=post_tag&post_type=my_events'.

따라서 제거 함수 호출은 다음과 같습니다.

remove_submenu_page('edit.php?post_type=my_events', 'edit-tags.php?taxonomy=post_tag&post_type=my_events');

하위 메뉴 슬러그는 html 인코딩이므로 앰퍼샌드는 현재&- 이것은 아마도 사람들이 민달팽이 이름이 무엇이어야 하는지를 첫번째 원칙으로부터 알아내는 것을 어렵게 만든 것일 것입니다.

이건 좀 더러운데 작동은 돼요:

add_action('admin_menu', 'remove_niggly_bits');
function remove_niggly_bits() {
    global $submenu;
    unset($submenu['edit.php?post_type=portfolio'][11]);
}

어떤 키 번호를 삭제할지 정확히 모르겠습니다.이를 찾는 가장 좋은 방법은 다음과 같습니다.

add_action('admin_menu', 'remove_niggly_bits');
function remove_niggly_bits() {
    global $submenu;
    //unset($submenu['edit.php?post_type=portfolio'][11]);
    print_r($submenu); exit;
}

관리 영역을 로드할 때 해당 줄을 제거할 때까지 모든 것이 끊어지지만 구조와 필요한 키가 표시됩니다.

그냥 사용하는 것이 더 나을 수도 있습니다.'show_ui' => false.

function car_brand_init() {
    // new taxonomy named merk
    register_taxonomy(
        'merk',
        'lease_fop',
        array(
            'label' => __( 'Merken' ),
            'rewrite' => array( 'slug' => 'merken' ),
            'update_count_callback' => '_update_post_term_count',
            // use this to hide from menu
            'show_ui' => false,
            'capabilities' => array(
                'assign_terms' => 'edit_guides',
                'edit_terms' => 'publish_guides'
            )
        )
    );
}
add_action( 'init', 'car_brand_init' );

benz001의 답변을 토대로 작성합니다.

슬러그를 바로잡기 위해 var dump를 할 필요가 없습니다.저는 이게 통했어요.

remove_submenu_page('edit.php?post_type=POST_TYPE', 'edit-tags.php?taxonomy=TAXONOMY_SLUG&post_type=POST_TYPE')

첫 번째 인수는 백엔드로 아카이브를 볼 때 브라우저 상단의 URL 필드에 표시되는 것으로 POST_TYPE을 바꿉니다.

두 번째 인수: 제거할 하위 메뉴를 마우스 왼쪽 버튼으로 클릭하고 링크를 복사한 다음 마지막 순방향 슬래시를 제거하고 왼쪽에 있는 모든 것을 제거합니다.&를 &로 교체합니다.

아래의 두번째 arg 예제입니다.

1 하위 메뉴 복사 및 붙여넣기 링크

http://yourwebsite.com/wp-admin/edit-tags.php?taxonomy=your_custom_taxonomy&post_type=your_custom_post

2 마지막 순방향 슬래시와 남은 것을 모두 제거합니다.

edit-tags.php?taxonomy=your_custom_taxonomy&post_type=your_custom_post

3 & 를 HTML 엔티티로 대체

/edit-tags.php?taxonomy=your_custom_taxonomy&post_type=your_custom_post

언급URL : https://stackoverflow.com/questions/7610702/wordpress-remove-submenu-from-custom-post-type

반응형