사용자 지정 게시물 유형 메뉴를 다른 사용자 지정 게시물 유형 하위 메뉴로 추가 할 수 있습니까


28

현재 두 가지 사용자 정의 게시물 유형을 사용하는 워드 프레스 플러그인을 개발 중입니다. 내가 여기서 알고 싶은 것 : 사용자 정의 게시물 유형 메뉴를 다른 사용자 정의 게시물 유형의 하위 메뉴로 추가 할 수 있습니까?

답변:


59

예. 게시물 유형을 등록 할 때 show_in_menu표시하려는 페이지 로 설정해야합니다 .

게시물의 하위 메뉴로 맞춤 게시물 유형 추가

여기서는 "영화"게시물 유형이 게시물 아래의 하위 메뉴에 포함되도록 설정합니다.

register_post_type( 'movies',
    array(
            'labels' => array(
                    'name' => __( 'Movies' ),
                    'singular_name' => __( 'Movie' )
            ),
    'public' => true,
    'has_archive' => true,
    'show_in_menu' => 'edit.php'
    )
);

맞춤 게시물 유형에 분류가 등록되어 있으면 페이지에도 추가해야합니다.

에서 add_submenu_page()첫 번째 인수에 할당 할 수있는 페이지입니다 마지막 메뉴 슬러그입니다.

add_action('admin_menu', 'my_admin_menu'); 
function my_admin_menu() { 
    add_submenu_page('edit.php', 'Genre', 'Genre', 'manage_options', 'edit-tags.php?taxonomy=genre'); 
}  

다른 맞춤 게시물 유형의 하위 메뉴로 맞춤 게시물 유형 추가

다른 사용자 정의 게시물 유형에 페이지를 추가하려면 페이지 이름과 함께 게시물 유형의 쿼리 문자열 매개 변수를 포함하십시오.

게시물 유형 엔터테인먼트에서 CPT 영화 및 분류 체계 장르를 추가하려면 다음과 같이 코드를 조정하십시오.

edit.php 된다 edit.php?post_type=entertainment

edit-tags.php 된다 edit-tags.php?taxonomy=genre&post_type=entertainment

register_post_type( 'movies',
    array(
            'labels' => array(
                    'name' => __( 'Movies' ),
                    'singular_name' => __( 'Movie' )
            ),
    'public' => true,
    'has_archive' => true,
    'show_in_menu' => 'edit.php?post_type=entertainment'
    )
);

add_action('admin_menu', 'my_admin_menu'); 
function my_admin_menu() { 
    add_submenu_page('edit.php?post_type=entertainment', 'Genre', 'Genre', 'manage_options', 'edit-tags.php?taxonomy=genre&post_type=entertainment'); 
}

2
고마워 작동합니다. 그러나 하위 메뉴 cpt는 하위 메뉴를 잃었습니다.
Ari

분류를 포함하는 방법으로 답변을 업데이트했습니다.
epilektric

감사합니다! 나는 그것을 할 길을 찾았습니다! 그러나 더 나은 결과를 줄 수 있습니다!
Ari

show_in_menu속성은 나를 위해 일하지 않았다.
Francisco Corrales Morales

반복해서 죄송합니다. 하위 메뉴 및 Paretn 메뉴를 강조 표시하려면 WP에 추가 정보를 제공해야합니다. 'show_in_menu'매개 변수는 'my_post_type'이 화면에있을 때 하위 메뉴를 현재 / 강조 표시합니다. 이제 부모 메뉴를 강조 표시하는 다른 작업을 추가해야합니다. 시도해보십시오 : add_filter ( 'parent_file', 'menu_highlight')); function menu_highlight ($ parent_file) {전역 $ plugin_page, $ post_type; if ( 'my_post_type'== $ post_type) {$ plugin_page = 'edit.php? post_type = my_post_type'; // 하위 메뉴 후크 이름} return $ parent_file; }
TomeeNS

6

우리의 사용자 정의 게시물 유형 :

$args['show_in_menu'] = false;
register_post_type('custom_plugin_post_type', $args);

기존 맞춤 게시물 유형 (예 : "제품")에 추가하십시오.

$existing_CPT_menu = 'edit.php?post_type=product';
$link_our_new_CPT = 'edit.php?post_type=custom_plugin_post_type';
add_submenu_page($existign_CPT_menu, 'SubmenuTitle', 'SubmenuTitle', 'manage_options', $link_our_new_CPT);

또는 사용자 정의 플러그인 메뉴를 추가하십시오.

// Create plugin menu
add_menu_page('MyPlugin', 'MyPlugin', 'manage_options', 'myPluginSlug', 'callback_render_plugin_menu');

// Create submenu with href to view custom_plugin_post_type
$link_our_new_CPT = 'edit.php?post_type=custom_plugin_post_type';
add_submenu_page('myPluginSlug', 'SubmenuTitle', 'SubmenuTitle', 'manage_options', $link_our_new_CPT);

감사! 도움이됩니다.
NSukonny
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.