[워드프레스] 관리자 화면에 메뉴 추가하기(add_menu_page)
워드프레스 테마나 플러그인을 만들 때 본인이 만든 관리자 화면에서 테마나 플러그인의 설정 페이지를 만들어 작동하도록 하고 싶을 때가 있습니다.
설정 페이지를 만들기 위해서는 일단 관리자 화면에 먼저 메뉴를 추가해야 합니다. 오늘은 add_menu_page 함수를 이용해 간단하게 관리자 화면에 메뉴를 추가하는 방법을 정리해봅니다.
add_menu_page 기본 사용법
워드프레스에서는 기본적으로 add_menu_page 라는 내장 함수를 이용해 사용자가 직접 관리자 화면에 메뉴를 추가 할 수 있도록 하고 있습니다. add_menu_page 함수의 사용법은 아래와 같습니다.
function custom_admin_menu() { add_menu_page( $page_title, $menu_title, $capability, $menu_slug, ($function), ($icon_url), ($position) ); } add_action( 'admin_menu', 'custom_admin_menu' );
admin_menu 함수가 실행 될 때 메뉴를 추가하기 위해 새로 만든 custom_admin_menu 함수가 실행 되도록 합니다.
custom_admin_menu 함수에서는 add_menu_page 내장 함수를 이용해 새로운 메뉴를 만들어 줍니다.
add_menu_page 파라미터
add_menu_page 함수에 들어가는 파라미터를 하나씩 알아 봅시다. 참고로 위 예제에서 괄호가 없는 파라미터는 필수 투입 파라미터이고, 괄호 안에 있으면 선택적으로 투입 할 수 있습니다.
page_title
사용자가 메뉴를 눌러 진입한 페이지의 제목입니다. 인터넷 브라우저의 탭이나 타이틀바에 표시되는 페이지의 제목이라고 생각하면 됩니다.
menu_title
실제 관리자 화면의 메뉴 목록에 표시될 메뉴의 이름입니다. 아무래도 관리자 화면의 메뉴 폭이 크지 않으니 짧고 간단하게 투입하는 것이 좋겠네요.
capability
메뉴를 볼 수 있는 사용자의 권한을 의미합니다. manage_options 값 정도를 넣으면 충분합니다. 필요에 따라 다양한 권한을 설정 할 수 있습니다. 다양한 권한에 대한 값은 아래 참고자료의 Role and Capabilities 페이지를 참고하세요.
menu_slug
메뉴를 눌러 표시되는 페이지의 slug 를 입력합니다. slug 는 영어 소문자, 숫자, hypen 으로만 구성됩니다.
function
실제 페이지에 표시될 내용을 출력해 줄 함수를 넣으면 됩니다. 이번 포스트에 이 부분까지 포함하면 너무 길어지니 다음에 이 부분만 추가적으로 다뤄 보겠습니다.
icon_url
메뉴 항목의 아이콘을 설정합니다. svg 파일을 직접 연결하거나, Dashicons 를 사용 할 수 있고, none 으로 설정해 아무 것도 표시 하지 않을 수 있습니다.
position
메뉴 항목이 표시 될 위치를 설정합니다. 본인이 원하는 위치에 맞는 적당한 숫자를 넣으면 됩니다. 간단하게 몇 가지만 알아보면 아래와 같습니다(워드프레스 한국어 버전 메뉴입니다).
- 5 – 글
- 20 – 페이지
- 60 – 테마 디자인
- 65 – 플러그인
- 80 – 설정
예를 들어 설정 메뉴 바로 밑에 추가하고 싶다면 81 정도로 설정하면 됩니다.
add_menu_page 실전 예제
실제로 add_menu_page 함수를 사용하는 방법은 아래와 같습니다.
function custom_admin_menu() { add_menu_page( 'My custom plugin settings page', 'My custom plugin', 'manage_options', 'my-custom-plugin-settings', 'custom_plugin_setting', 'dashicons-admin-generic', 81 ); } add_action( 'admin_menu', 'custom_admin_menu' );
대충 어떻게 사용하는지 감이 잡히죠? 생각보다 굉장히 간단합니다.
추가적으로 서브 메뉴 만드는 방법과 실제 설정 페이지를 만드는 방법에 대해서도 포스팅 하도록 하겠습니다.
참고자료
- add_menu_page, WordPress.org CODEX
- Role and Capabilities, WordPress.org Support
댓글 남기기