티스토리 뷰
워드프레스의 관리자 화면은 기본적으로 툴바, 헤더, 메인 메뉴, 작업 영역, 푸터 등으로 구분된다.
플러그인 제작시 관리 메뉴와 화면을 추가할 수 있는 방법에 대해 알아본다.
(플러그인 작성 및 Action, Filter에 대한 기본 지식을 전제로 한다.)
플러그인의 기능을 제어하는 화면을 구성하기 위한 위치 선정으로 세가지 사항을 고려해 볼 수 잇다.
1. 최상위 메뉴 페이지
2. 하위 메뉴 페이지
3. 페이지 내부 섹션
간단한 설정을 [설정]-[읽기]에 섹션을 추가하여 플러그인을 제어할 수도 있고,
[설정]-[custom submenu name]을 생성하여 새로운 페이지를 만들 수도 있다.
기본적으로 최상위 메뉴페이지는 add_menu_page()와 remove_menu_page()를 사용하여 제어한다.
이때 주의해야할 점은 접근 권한을 없애기 위해 remove_menu_page()를 사용하여서는 안된다는 것 이다.
remove_menu_page()는 단순히 메뉴에서 보이지 않게 할 뿐 실제로 제거하는 것이 아니기 때문이다.
하위메뉴는 add_submenu_page()와 remove_submenu_page()를 사용하게 되는데
<?php add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function); ?>
이때 첫번째 인자로 주어지는 부모 슬러그는 직접 만든 커스텀 메뉴의 페이지일 수 있고 워드프레스에서 기본적으로 생성된 페이지 일 수도 있다.
예:
- 대시보드 : add_submenu_page ('index.php',...)
- 게시물 의 경우 : add_submenu_page('edit.php',...)
- 미디어 용: add_submenu_page ('upload.php',...)
- 페이지 의 경우 : add_submenu_page('edit.php?post_type=page',...)
- 댓글 : add_submenu_page ('edit-comments.php',...)
- 사용자 정의 게시물 유형 : add_submenu_page ('edit.php?post_type=your_post_type',...)
- 외모 : add_submenu_page ('themes.php',...)
- 플러그인 의 경우 : add_submenu_page('plugins.php',...)
- 사용자 : add_submenu_page ('users.php',...)
- 도구 의 경우 : add_submenu_page('tools.php',...)
- 설정 : add_submenu_page ('options-general.php',...)
예시 1) 다음은 하위 메뉴 페이지의 제목이 최상위 페이지와 다른 최상위 메뉴 페이지와 하위 메뉴 페이지를 삽입하는 방법을 보여주는 간단한 예입니다. 이 예에서 'my_magic_function'은 첫 번째 하위 메뉴 페이지를 표시하는 함수의 이름입니다.
<?php
add_menu_page('Page title', 'Top-level menu title', 'manage_options', 'my-top-level-handle', 'my_magic_function');
add_submenu_page( 'my-top-level-handle', 'Page title', 'Sub-menu title', 'manage_options', 'my-submenu-handle', 'my_magic_function');
?>
예시 2) 다음은 사용자 정의 게시물 유형 메뉴 블록 아래에 옵션 페이지를 추가하는 예입니다
<?php add_submenu_page('edit.php?post_type=wiki', 'Options', 'Options', 'manage_options', 'wiki-options', array(&$this, 'options_page') ); ?>
사실상 대부분의 하위 메뉴들은 설정, 도구 또는 모양 메뉴에 속하기 때문에 Wordpress는 하위 수준 메늏 ㅏㅇ목을 상위 메뉴에 더 쉽게 추가할 수 있도록 하는 래퍼 함수를 제공하고 있다. 그러나 이름은 업데이트에 따라 변경 되었으므로 관리 화면에 표시되는 이름과 일치하지 않을 수 있다.
대시보드
<?php add_dashboard_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>
게시글
<?php add_posts_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>
미디어
<?php add_media_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>
페이지
<?php add_pages_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>
댓글
<?php add_comments_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>
외모
<?php add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>
플러그인
<?php add_plugins_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>
사용자
<?php add_users_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>
도구
<?php add_management_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>
설정
<?php add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>
여기서 options page 생성과 관련하여서는 별도 학습이 필요로 하다.
그리고 가장 중요한것은 메뉴 추가의 action을 admin_init가 아닌 admin_menu에 Hook을 걸어야 한다는 것이다.
add_action('admin_menu', 'h2_add_pages');
'오늘도 개발자 > WEB&워드프레스' 카테고리의 다른 글
[WEB] 웹브라우저 URL 주소 복사 시 자동으로 인코딩 될 경우 (1) | 2022.03.21 |
---|---|
[wordpress] 테마 사용자정의하기 ( Theme Customization ) (0) | 2022.02.15 |
[Wordpress & WPML ] invalid URL path for scripts and styles "ontent" (잘못된 URL 경로 문제) (0) | 2022.01.05 |
linux에서 bitnami wordpress stack으로 설치시 url "/wordpress/" 제거 방법 (0) | 2021.12.21 |
업로드 용량 설정 (0) | 2019.06.17 |
- Total
- Today
- Yesterday
- wp-members
- URL디코딩
- 빛의성당
- 썸머노트
- 이전설치
- wordpress #워드프레스 #url
- 코스모스팜
- 라이트세일
- php
- URL인코딩
- CSPRNG
- Lighitsail
- 이사
- 도스 코파스
- 워드프레스
- 빈화면
- 스프레드연산자
- ontent
- 지대공
- 철거
- 사용자정의하기
- MySQL
- url복사
- WordPress
- 한빛미디어
- FTP권한문제
- Theme Customization
- Sanitize
- 고흐1인칭시점
- 11번가 아마존 #우주패스 #우주쓰레기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |