SSamTure.net

HOME

워드프레스 대시보드 메뉴 개발하기

오늘은 워드프레스 플러그인 개발 기초에 이어 실전 개발에 대해 알아보도록 하자.

payday loans bad credit lenders only

워드프레스 개발 시 가장 많이 사용 되는 것 중 하나가 관리자 화면에 메뉴를 추가하고 해당 메뉴의 페이지에서 설정 값을 저장할 수 있도록 지원하는 것이다.

buying generic cialis mexico rx

메뉴를 생성하는 방법은 크게 3종류가 있다.

1. 기존 메뉴에 서브 메뉴 형태로 추가

2. 새로운 메뉴를 추가.

3. 새로운 메뉴를 추가하고 추가한 메뉴에 서브메뉴 형태로 추가

각각의 방법에 대해 예제를 통하여 살펴보도록 하자.

1. 기존 메뉴에 서브 메뉴 형태로 추가

워드프레스 관리자 페이지에 들어가면 아래와 같이 기본 메뉴들을 볼 수 있을 것이다. 기본적으로 구성되어 있는 메뉴에 새로운 메뉴를 추가하도록 하자. 주로 추가하는 메뉴에는 테마 옵션을 위한 Appearance 메뉴 또는 기타 설정을 위한 Settings 메뉴에 주로 추가하게 된다.

image

본 예제에서는 플러그인에서 메뉴를 추가하도록 하겠다. 물론 동일한 소스를 테마에서 사용하여 메뉴를 구성할 수 있다. 이 경우에는 앞서 설명한 Appearance 메뉴에 추가하는 것이 적합하다.

플러그인 생성을 위하여 적절한 파일이름으로 다음의 내용을 작성한다.

<?php
/**
* Plugin Name: MH Menu Exam
* Plugin URI:  http://ssamture.net
* Description: 메뉴 개발 예제 플러그인 입니다.
* Author:      MinHyeong Lim
* Author URI:  http://ssamture.net
* Version:     1.0
*/
add_action('admin_menu', 'mh_add_menu1');
function mh_add_menu1(){
add_options_page('menu1','메뉴1','manage_options','menu-1','menu1_page');
}
function menu1_page(){
}
?>

해당 내용을 추가한 후 플러그인 메뉴에서 활성화 해준다.

image

활성화 후 설정(Settings) 메뉴로 이동해보면 메뉴1이라고 새로운 메뉴가 추가된 것을 확인 할 수 있다.

소스를 살펴보면 add_action(), add_options_page() 함수가 사용되었다.

add_action는 플러그인 API함수로 액션 후크 함수이다. 이 때 사용된 후크명은 admin_menu 로 admin_menu 후크에 mh_add_menu1 의 함수를 추가하도록 하는 함수이다.

add_options_page는 설정(Settings)메뉴에 새로운 메뉴를 추가해주는 것이다. 이 때, 메뉴가 추가되면서 해당 메뉴를 클릭하면 새로운 빈페이지를 볼 수 있으며 해당 페이지는 menu1_page() 에서 구현해주면 된다.

즉, 메뉴와 페이지는 같이 생성이 되어야 한다.

함수를 자세히 살펴보도록 하자.

add_action( $tag, $function_to_add, $priority, $accepted_args );
$tag (string)(필수) $function_to_add 를 추가할 액션 이름
$function_to_add (callback)(필수) 해당 액션에서 호출할 함수
$priority (int) 우선순위
$accepted_args (int) : 콜백함수 인수 갯수

add_optons_page( $page_title, $menu_title, $capability, $menu_slug, $function );
$page_title(string)(필수) 메뉴 선택 시 브라우저 타이틀바에서 표시할 이름
$menu_title(string)(필수) 사용할 메뉴 이름
$capablility(string)(필수) 메뉴 권한
$menu_slug(string)(필수) 주소표시줄에 표시할 슬러그
$function(callback) 해당 메뉴의 페이지를 표시할 함수

이와 같이 add_options_page()함수를 통해 손쉽게 메뉴를 추가할 수 있다. 여기서 options는 세팅 메뉴를 의미하는 것으로 다른 기본 메뉴에도 추가할 수 있도록 각각의 함수가 존재하고 있으며 다음을 참고하여 적절하게 이용하면 된다.

add_dashboard_page(), add_posts_page(), add_media_page(), add_links_page(), add_pages_page(), add_comments_page(), add_theme_page(), add_plugins_page(), add_users_page(), add_management_page()

2. 새로운 메뉴를 추가

아래 소스를 위의 예제에 추가하도록 하자.

<?php
/**
* Plugin Name: MH Menu Exam
* Plugin URI:  http://ssamture.net
* Description: 메뉴 개발 예제 플러그인 입니다.
* Author:      MinHyeong Lim
* Author URI:  http://ssamture.net
* Version:     1.0
*/
add_action('admin_menu', 'mh_add_menu1');
function mh_add_menu1(){
add_options_page('menu1','메뉴1','manage_options','menu-1','menu1_page');
}
function menu1_page(){
}
add_action('admin_menu', 'mh_add_menu2');
function mh_add_menu2(){
add_menu_page('menu2', '메뉴2', 'manage_options', 'menu-2', 'menu2_page',   '', 6);
}
?>

관리자 페이지를 새로 고침 하면 아래와 같이 메뉴2라고 새로운 메뉴가 추가 된 것을 확인 할 수 있을 것이다.

image

add_menu_page() 함수를 통하여 메뉴를 추가할 수 있다. add_menu_page의 각각의 파라미터는 1번 항목과 같다.

3. 새로운 메뉴를 추가하고 추가한 메뉴에 서브메뉴 형태로 추가

아래와 같이 소스를 수정해주자.

<?php
/**
* Plugin Name: MH Menu Exam
* Plugin URI:  http://ssamture.net
* Description: 메뉴 개발 예제 플러그인 입니다.
* Author:      MinHyeong Lim
* Author URI:  http://ssamture.net
* Version:     1.0
*/
add_action('admin_menu', 'mh_add_menu1');
function mh_add_menu1(){
add_options_page('menu1','메뉴1','manage_options','menu-1','menu1_page');
}
function menu1_page(){
}
add_action('admin_menu', 'mh_add_menu2');
function mh_add_menu2(){
add_menu_page('menu2', '메뉴2', 'manage_options', 'menu-2', 'menu2_page',   '', 6);
add_submenu_page('menu-2','menu3', '메뉴3', 'manage_options', 'menu-3', 'menu3_page');
}
?>

수정 후 관리자 페이지를 새로고침 하면 다음과 같이 서브 메뉴가 추가된 것을 확인 할 수 있을 것이다.

image

물론 menu2_page() 와 menu3_page() 함수가 없어 해당 메뉴를 클릭하면 에러 메시지가 뜰 것이다. 하지만 본 포스팅에서는 메뉴 개발하는 방법에 대하여 소개하므로 옵션 페이지 개발은 다음 시간에 설명하도록 하겠다.

add_submenu_page() 함수의 사용 방법은 다음과 같다.

<?php add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function ); ?>
$parent_slug(string)(필수) 상위 메뉴의 메뉴 슬러그
$page_title(string)(필수) 메뉴 선택 시 브라우저 타이틀바에서 표시할 이름
$menu_title(string)(필수) 사용할 메뉴 이름
$capablility(string)(필수) 메뉴 권한
$menu_slug(string)(필수) 주소표시줄에 표시할 슬러그
$function(callback) 해당 메뉴의 페이지를 표시할 함수

메뉴를 추가하다 보면 아래와 같은 현상이 발생할 수 있을 것이다.

image

즉 상위 메뉴와 서브메뉴가 겹쳐지는 것이다. 이런 경우에는 예제상에서 메뉴2와 메뉴3의 메뉴슬러그를 동일하게 통일해주면 해결 할 수 있다.

<?php
/**
* Plugin Name: MH Menu Exam
* Plugin URI:  http://ssamture.net
* Description: 메뉴 개발 예제 플러그인 입니다.
* Author:      MinHyeong Lim
* Author URI:  http://ssamture.net
* Version:     1.0
*/
add_action('admin_menu', 'mh_add_menu1');
function mh_add_menu1(){
add_options_page('menu1','메뉴1','manage_options','menu-1','menu1_page');
}
function menu1_page(){
}
add_action('admin_menu', 'mh_add_menu2');
function mh_add_menu2(){
add_menu_page('menu2', '메뉴2', 'manage_options', 'menu-2', 'menu2_page',   '', 6);
add_submenu_page('menu-2','menu3', '메뉴3', 'manage_options', 'menu-2', 'menu3_page');
add_submenu_page('menu-2','menu4', '메뉴4', 'manage_options', 'menu-4', 'menu4_page');
}
?>

image

참고로 메뉴2와 메뉴3의 콜백함수는 메뉴2를 따르게 된다.

이상으로 관리자 메뉴를 개발하는 방법에 대하여 알아보았다. 다음 시간에는 생성한 메뉴에서 사용할 옵션페이지 개발하는 방법에 대하여 살펴보도록 하겠다.

1 Comment

Leave a Reply

Your email address will not be published. Required fields are marked *