워드프레스 관리자:Custom Post Type(사용자 지정 게시 유형)을 상위 메뉴의 하위 메뉴로 배치할 때 상위 메뉴 링크가 CPT에 의해 재정의됩니다.
Custom Post Type(사용자 지정 게시 유형)을 등록하고, 고유한 메뉴가 있는 것을 원하지 않으며, 대신 다음과 같은 기존 관리 메뉴 항목의 하위 메뉴로 배치합니다.my-custom-parent-page
.
제 암호는 이렇습니다.
register_post_type('my_custom_post_type',
array(
'labels' => array(
'name' => __('Books', 'mcpt'),
'singular_name' => __('Book', 'mcpt'),
),
'supports' => array('title', 'editor'),
'show_ui' => true,
'show_in_nav_menus' => false,
'show_in_menu' => 'my-custom-parent-page',
)
);
메뉴 아래에 제대로 위치해 있다는 뜻으로 작동합니다.my-custom-parent-page
, 그러나 이제 부모 메뉴를 클릭하면(즉,)my-custom-parent-page
) 그것은 나를 가리킵니다.my_custom_post_type
페이지...
도와줄 사람?
기존 상위 페이지의 하위 메뉴에 사용자 지정 게시 유형 배치
Codex에 따르면, 이는 알려진 행동이고 예상되는 행동은 다음과 같습니다.
참고: 플러그인이 만든 메뉴 페이지의 하위 메뉴로 표시하기 위해 'some string'을 사용할 때 이 항목은 첫 번째 하위 메뉴 항목이 되며, 최상위 링크의 위치를 대체합니다.
출처 : https://codex.wordpress.org/Function_Reference/register_post_type#Arguments ("show_in_menu" 섹션 참조)
다음은 다음과 같은 해결책을 제시하는 인용문의 끝 부분입니다.
이를 원하지 않으면 메뉴 페이지를 생성하는 플러그인은 add_action 우선 순위를 admin_menu에 대해 9 이하로 설정해야 합니다.
그래서 이것은 꽤 간단하게 해결할 수 있습니다.하지만 제 경우에는 부모 페이지가 타사 라이브러리에서 생성되기 때문에 우선 순위를 변경할 수 없었습니다.그래서 저는 다음과 같은 해결책을 생각해 냈습니다.
// Move the "example_cpt" Custom-Post-Type to be a submenu of the "example_parent_page_id" admin page.
add_action('admin_menu', 'fix_admin_menu_submenu', 11);
function fix_admin_menu_submenu() {
// Add "Example CPT" Custom-Post-Type as submenu of the "Example Parent Page" page
add_submenu_page('example_parent_page_id', 'Example CPT', 'Example CPT', 'edit_pages' , 'edit.php?post_type=example_cpt');
}
우선순위 11, Custom-Post-Type 등록 시 "을 설정합니다.show_in_menu
" 에 매개 변수를 지정합니다.false
, 그래서 우리는 그것을 메뉴에 수동으로 추가할 수 있습니다.add_submenu_page
위와 같이
Custom-Post-Type 하위 메뉴 항목을 "Active"로 적절히 설정
이제 위 솔루션은 정상적으로 작동하지만, "example_cpt" Custom-Post-Type" 게시물을 생성/편집할 때 활성으로 설정되지 않고 하위 메뉴가 펼쳐지지 않습니다.다음은 "example_cpt" Custom-Post-Type" 게시물을 작성/편집할 때 해당 게시물이 활성으로 설정되었는지 확인하는 방법입니다.
// Set the "example_parent_page_id" submenu as active/current when creating/editing a "example_cpt" post
add_filter('parent_file', 'fix_admin_parent_file');
function fix_admin_parent_file($parent_file){
global $submenu_file, $current_screen;
// Set correct active/current menu and submenu in the WordPress Admin menu for the "example_cpt" Add-New/Edit/List
if($current_screen->post_type == 'example_cpt') {
$submenu_file = 'edit.php?post_type=example_cpt';
$parent_file = 'example_parent_page_id';
}
return $parent_file;
}
미세 조정: 첫 번째 하위 메뉴 항목 이름 변경
또한, 제 하위 메뉴의 첫 번째 메뉴 항목에 부모 이름과 다른 이름을 붙였으면 했습니다.기본적으로 위의 코드를 사용하면 다음과 같습니다.
- Example Parent Page
-- Example Parent Page
-- Example CPT
보다시피 하위 메뉴의 첫 번째 메뉴 항목은 상위 메뉴의 복제이며 기본 WordPress 동작입니다.이 중복 항목의 이름을 워드프레스가 기본 메뉴(예: "게시물"과 하위 메뉴 항목(둘 다 같은 페이지를 가리키지만 이름이 다른 "모든 게시물")와 같이 다른 이름으로 바꾸고 싶었습니다.
다음은 첫 번째 하위 메뉴 항목의 이름을 변경하는 방법입니다.
add_action('admin_menu', 'rename_first_submenu_entry', 11);
function rename_first_submenu_entry() {
// Rename first submenu entry (duplicate of parent menu) from "Example Parent Page" to "Submenu Text"
add_submenu_page('example_parent_page_id', 'Example Parent Page', 'Submenu Text', 'edit_pages' , 'example_parent_page_id');
}
우선순위 11이 생성된 후 이름이 변경되도록 유의하시기 바랍니다.이제 우리는 다음과 같습니다.
- Example Parent Page
-- Submenu Text
-- Example CPT
하위 메뉴 텍스트는 "부모 페이지 예시"와 같은 위치를 가리킵니다.
를 .'show_in_menu'
지정 합니다 args to에를 합니다.$menu_slug
t.add_menu_page()
CPT를 의 하위 메뉴로 설정하고 admin_menu 기능의 우선 순위를 9 이하로 설정할 것.예를 들어,
먼저 우선 순위가 9 이하로 설정된 새 최상위 메뉴 페이지를 만듭니다(필수 항목입니다).
add_action( 'admin_menu', 'settings_menu' ), 9 );
function settings_menu() {
add_menu_page( __( 'Page Title' ), 'Menu Title', 'manage_options', 'menu_slug', show_page_callback() );
}
function show_page_callback() {
// show the settings page, plugin homepage, etc.
}
그런 '를 'show_in_menu' arg로 지정 . 를.menu_slug
가 막 t.settings_menu()
기능.
add_action( 'init', 'create_post_type' );
function create_post_type() {
register_post_type('my_custom_post_type',
array(
'labels' => array(
'name' => __('Books', 'mcpt'),
'singular_name' => __('Book', 'mcpt'),
),
'supports' => array('title', 'editor'),
'public' => true,
'show_in_menu' => 'menu_slug',
);
}
도움이 되길 바랍니다.
정확히 이유가 무엇인지 말할 수는 없지만 워드프레스가 첫번째 하위메뉴 항목으로 리디렉션되는 것 같습니다.
따라서 상위 메뉴 항목과 동일한 내용의 하위 메뉴 항목을 새로 만들어야 합니다.
add_action('admin_menu', 'my_admin_menu');
function my_admin_menu() {
global $submenu;
add_menu_page('My Menu', 'My Menu', 'administrator', 'my-menu', 'callback_func');
$parent = array('My Menu', 'administrator', 'my-menu', 'My Menu'); // new submenu-itm
$submenu['my-menu'] = fix_menu($submenu['my-menu'], $parent); // adds the new submenu-item at beginning of 'my-menu'-item
}
function fix_menu($submenu) {
array_unshift ($submenu, $parent);
return $submenu;
}
당신에게 효과가 있기를 바랍니다.
언급URL : https://stackoverflow.com/questions/21927445/wordpress-admin-when-placing-a-custom-post-type-as-a-submenu-of-a-parent-menu
'programing' 카테고리의 다른 글
디렌트 구조의 구성원 (0) | 2023.09.21 |
---|---|
"docker composition"과 "docker composition"의 차이 (0) | 2023.09.21 |
안드로이드 스튜디오에서 'libs' 폴더를 추가하는 방법은? (0) | 2023.09.21 |
서명된 int와 서명되지 않은 int 사이의 캐스트는 메모리에서 변수의 정확한 비트 패턴을 유지합니까? (0) | 2023.09.21 |
MariaDB UNION과 함께 선택할 때 텍스트 잘라내기 (0) | 2023.09.21 |