메뉴에 추가하지 않고 WordPress 관리 페이지를 추가하려면 어떻게 해야 합니까?
WordPress 플러그인을 만들고 있는데 서브메뉴에서 접근할 수 없는 편집 항목 페이지가 있었으면 합니다.
이 리소스(http://codex.wordpress.org/Adding_Administration_Menus)에는 관리 페이지를 함수와 관련짓는 방법이 나와 있지만 메뉴 항목으로 추가하지 않고는 관련짓는 방법이 나와 있지 않습니다.
할 수 있을까?
감사합니다!
최고의 솔루션 http://wordpress.org/support/topic/add-backend-page-without-menu-item
add_submenu_page
slug = slug slug = null slug slug slug slug
JS가 원하는 메뉴 항목(및 서브메뉴 항목)을 강조 표시할 필요가 없고 플러그인이 등록한 일반 메뉴(@Josh의 답변은 커스텀 포스트 타입에만 해당)에서 사용할 수 있는 방법을 드디어 발견했습니다.
등록하기만 그 후을 하면 됩니다.'submenu_file'
filter를 눌러 등록을 해제하고 옵션으로 다른 하위 메뉴 항목을 강조 표시하도록 설정합니다.
function so3902760_wp_admin_menu() {
// Register the parent menu.
add_menu_page(
__( 'Parent title', 'textdomain' )
, __( 'Parent', 'textdomain' )
, 'manage_options'
, 'my_parent_slug'
, 'display_my_menu'
);
// Register the hidden submenu.
add_submenu_page(
'my_parent_slug' // Use the parent slug as usual.
, __( 'Page title', 'textdomain' )
, ''
, 'manage_options'
, 'my_hidden_submenu'
, 'display_my_submenu'
);
}
add_action( 'admin_menu', 'so3902760_wp_admin_menu' );
function so3902760_wp_admin_submenu_filter( $submenu_file ) {
global $plugin_page;
$hidden_submenus = array(
'my_hidden_submenu' => true,
);
// Select another submenu item to highlight (optional).
if ( $plugin_page && isset( $hidden_submenus[ $plugin_page ] ) ) {
$submenu_file = 'submenu_to_highlight';
}
// Hide the submenu.
foreach ( $hidden_submenus as $submenu => $unused ) {
remove_submenu_page( 'my_parent_slug', $submenu );
}
return $submenu_file;
}
add_filter( 'submenu_file', 'so3902760_wp_admin_submenu_filter' );
할 수 말하면 항목을 더 것 , 이 ,, (, (, (, (, (, (, (, (, (, (, 기, 기, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the,$_GET
super-global을 지정하면 사용자가 특정 항목을 편집할 필요가 있음을 나타냅니다.
예를 들어 편집할 항목을 나열하는 페이지가 있을 수 있으며, '편집'을 누르면 항목의 ID만 현재 URL(쿼리 문자열)에 추가됩니다.
이 페이지를 표시하는 기능에서 ID가 정의되어 있는 경우 해당 항목을 편집할 수 있는 페이지를 제공합니다.
그렇지 않으면 목록 보기를 제공합니다.이것이 투고, 페이지 및 기타 커스텀 투고 타입의 방법입니다.
부모 slug = null인 add_pair_page
또는
메뉴 제목 = null인 add_menu_page
메뉴를 추가하지 않고 새 페이지를 만들 때 이 코드를 사용합니다.
add_action( 'admin_menu', 'register_newpage' );
function register_newpage(){
add_menu_page($appname, $appname, 'administrator','custompage', 'custom');
remove_menu_page('custom');
}
function custom()
{
echo "hai";
}
주의: 이 솔루션은 현재 메뉴 및 하위 메뉴 항목을 자동으로 설정하지 않습니다.숨겨진 페이지를 표시할 때 특정 메뉴를 현재 상태로 강조 표시하려면 다른 답변을 참조하십시오.
제 앞에 나온 답변들을 보면 여러 가지 방법이 있다는 것을 알 수 있습니다.하지만 제가 생각하는 가장 좋은 방법이 하나 더 있습니다.
의 값에 따라 페이지를 다르게 로드합니다.$_GET
query var도 하나의 옵션이지만, 일부 사람들이 찾고 있는 것이 아닐 수 있습니다.
★★★★★★에 관한 add_submenu_page()
올바른 방향으로 가고 있지만, 앞의 제안에는 각각 문제가 있습니다. ★★$menu_title
로로 합니다.null
메뉴 항목이 표시되지 않도록 하는 것이 아니라 링크에 텍스트가 표시되지 않도록 하는 것입니다.링크는 아직 메뉴 공간을 차지하기 때문에 웃기게 보입니다.의 설정$parent_slug
로로 합니다.null
이 을 알 수 .title
$page_title
discloss.discloss.
은 제제책 my my my my my my를 설정하는 이었다.$parent_slug
슬러그에 'i_dont_exist'
메뉴 항목이 표시되지 않고 관리 화면을 표시하면 페이지 제목이 올바르게 입력됩니다.
add_submenu_page(
'_doesnt_exist'
,__( 'Page title', 'textdomain' )
,''
,'manage_options'
,'menu_slug'
,'display_my_menu'
);
네. 서브메뉴나 WP 관리패널의 메인메뉴를 통해서도 페이지에 접근할 수 없도록 할 수 있습니다.아래의 코드 스니펫을 참조해 주세요.
function myplugin_render_edit_page() {
// Code contains the UI for edit page.
}
/**
* Manage menu items and pages.
*/
function myplugin_register_admin_page() {
global $_registered_pages;
$menu_slug = plugin_basename('myplugin.php');
$hookname = get_plugin_page_hookname($menu_slug,'');
if (!empty($hookname)) {
add_action($hookname, 'myplugin_render_edit_page');
}
$_registered_pages[$hookname] = true;
}
add_action('admin_menu', 'myplugin_register_admin_page');
이게 도움이 됐으면 좋겠네요.
하위 메뉴 페이지 생성 및 부모 슬러그는 다음과 같이 비워 둡니다.
// Create page were you can add new users.
public function add_create_user_menu() {
add_submenu_page(
'',
'Create User',
'Create User',
'manage_options',
'create-user',
array( $this, 'add_create_user_page' )
);
}
다음과 같이 액세스 할 수 있습니다.
<a href="/wp-admin/admin.php?page=create-user">Add New</a>
저는 여기 있는 모든 제안들을 시도해 보았지만, 각각의 문제와 관련된 다양한 문제들을 가지고 있습니다.
이제 add_submenu_page의 WordPress 코덱스에 정답이 표시됩니다.즉, 옵션을 사용하는 것입니다.php를 부모 슬러그로 사용합니다.지어낸 이름을 사용했지만 권한 오류가 발생합니다.여러 위치에서 늘을 동일하게 사용하면 메뉴 텍스트가 표시되지 않거나(클릭 가능), 브라우저 제목이 사라집니다.
옵션 사용.php는 동작했지만 사용으로 인한 문제는 없었습니다.
add_submenu_page를 NULL의 부모와 함께 사용하는 것은 확실히 기능하지만, 특정 메뉴(커스텀 포스트 타입 메뉴 등)와 관련지어져 있지 않은 페이지를 유지하려면 @Boopathi의 답변을 사용해야 합니다.
function my_hidden_submenu_page(){
//add the submenu page the usual way
add_submenu_page('edit.php?post_type=custom-type', 'My Page Title', 'My Page Title', 'manage_options', 'my-page-slug', 'my_page_callback');
//then remove it
remove_submenu_page('edit.php?post_type=custom-type','my-page-slug');
}
add_action('admin_menu', 'my_hidden_submenu_page');
2개의 액션이 서로 취소되는 것처럼 보이지만 remove_submenu_page는 콜백함수의 등록을 해제하지 않고 링크만 삭제합니다.
이렇게 하면 다른 사용자가 링크되지 않은 페이지를 볼 때 올바른 탐색 메뉴(이 예에서는 사용자 지정 게시 유형 메뉴)가 활성 상태로 표시됩니다.
서브메뉴 항목의 부모 슬러그로 null을 추가하는 것만으로 문제가 발견된 것 중 하나는 현재 특정 페이지를 보고 있으면 서브메뉴 자체가 표시되지 않는다는 것입니다(적어도 페이지 제목은 표시되지 않음).
메뉴 제목에 빈 스팬 요소를 추가하고 jquery를 사용하여 상위 요소를 이동하고 숨깁니다.
이 요구는 현재 버전에서도 유효한 것 같습니다.사용하고 있다WordPress 5.3.2
다음 방법을 사용하여 부모 이름을 가진 메뉴를 삭제했습니다.submenu
.
add_action( 'admin_menu', 'submenus' );
function submenus()
{
global $submenu;
$parent_slug = 'parent_slug_name';
// remove parent named menu from submenu because it is always the first one in the submenu array, so the offset is 0 and remove just 1
array_splice( $submenu[$parent_slug], 0, 1 ); // with reindex
// or unset( $submenu[$parent_slug][0] ); // without reindex
}
그것이 같은 목표를 달성하고자 하는 다른 사람들에게 도움이 되기를 바랍니다.
- php array_splice()에 대해서
- 이 메서드는 WP 3.1.0 이후 사용 가능한 WP 함수 remove_submenu_page()의 소스에서 찾을 수 있습니다.
편집/추가됨
서브메뉴 외에 부모 메뉴도 같은 방법으로 갱신할 수 있습니다.부모 메뉴의 경우 글로벌 변수는 다음과 같습니다.$menu
. 참조 예:
add_action( 'admin_menu', array( $this, 'modify_menu_title' ) );
function modify_menu_title() {
global $menu;
$page = 'some-page-slug';
$new_menu_title = 'New Title Name';
foreach( $menu as $key => $value ) {
if( $menu[$key][2] === $page ) {
$menu[$key][0] = $new_menu_title;
}
}
}
다음과 같이 insert id를 재사용하면 됩니다.
add_menu_page( 'User AS Packages', 'User AS', 'manage_options', 'myplugin/editaspackages.php', 'UserASPackages', '', 8);
add_menu_page( 'User ARP Packages', 'User ARP', 'manage_options', 'myplugin/editarppackages.php', 'UserARPPackages', '', 8);
add_menu_page( 'AS Packages', 'AS Packages', 'manage_options', 'myplugin/ars-s2.php', 'ARPPackages', '', 8);
위치 8을 사용하는 마지막 3과 마지막 1은 앞의 2를 덮어쓰기 때문에 앞의 2는 표시되지 않습니다.
언급URL : https://stackoverflow.com/questions/3902760/how-do-you-add-a-wordpress-admin-page-without-adding-it-to-the-menu
'programing' 카테고리의 다른 글
차트 데이터 시리즈 순서 변경 (0) | 2023.04.10 |
---|---|
Jest를 사용하여 거절된 약속을 어떻게 테스트합니까? (0) | 2023.04.05 |
@CreatedDate 주석은 mysql과 함께 사용할 수 없습니다. (0) | 2023.04.05 |
MongoDB에서 컬렉션을 드롭하거나 삭제하려면 어떻게 해야 합니까? (0) | 2023.04.05 |
글로벌하게 정의된 각도JS 컨트롤러 및 캡슐화 (0) | 2023.04.05 |