RSS

태그 보관물: register_post_type

관리자 메뉴 생성 총정리

워드프레스는 편리하고 유연한 관리자 메뉴를 제공한다. 유연하다는 표현은 사용자가 관리자 메뉴를 간단하게 추가할 수 있기 때문이다. 보통 플러그인을 하나 추가할 때마다 관리자 메뉴가 추가된다.

관리자 메뉴를 추가하는 방법은 크게 세 가지다. 일반적으로 최상위 또는 기존 메뉴의 하위메뉴 형태로 생성한다. 그리고 기존 포스트 타입을 이용하는 방법이 있다. 포스트 타입을 이용할 때는 정해진 템플릿의 값을 정의해야 한다. 메뉴의 순서는 함수의 인자값을 통해 바꿀 수 있다.

  • 최상위 레벨에 메뉴 추가 : add_menu_page() 호출
  • 기존 메뉴의 하위에 추가 : add_submenu_page() 호출
  • 포스트 타입 이용 : register_post_type() 호출

관리 메뉴를 클릭했을 때 나타나는 설정 페이지도 세 가지 형태다. 완전하게 새로운 페이지를 생성하거나 워드프레스에서 기본 제공한 관리자 페이지에 섹션을 구성하거나 포스트 타입이 제공하는 템플릿을 이용하는 것이다.

  • 새로운 설정 페이지 생성 : add_menu_page() / add_submenu_page()의 콜백 함수를 정의
  • 기존 설정 페이지에 추가 : add_settings_section() 이용
  • 포스트 타입 템플릿 이용 : register_post_type() 인자로 정의된 레이블과 템플릿 이용

사용자 메뉴가 생성되었으면 그 설정페이지를 구성해야 한다. 거기에 사용되는 사용자 필드의 값을 저장하거나 불러올 수 있어야 한다.

  • 별도의 옵션으로 등록하여 사용 : add_option(), update_option(), get_option(), delete_option()
  • 기존 설정 페이지 옵션값으로 등록하여 사용 : add_settings_field(), register_setting()
Advertisements
 
 

태그: , , ,

관리자 메뉴에 플러그인 추가하기

플러그인의 관리자 페이지가 반드시 필요한 건 아니다. 하지만, 메타 데이터가 있을 때는 만드는 게 좋다. 그렇지 아니면 데이터베이스를 직접 갱신해야 하는 경우도 생길 수 있다. 상당히 귀찮다.

관리자 페이지 등록을 위해서는 생성한 플러그인을 워드프레스에 등록하고 활성화하는 작업이 필요하다. 플러그인을 등록하면 아래와 같이 해당 목록이 나타난다. 이를 활성화하면 사이트에서 바로 사용할 수 있다. 여기서는 직접 만든 Howdy Notices 플러그인 “활성화” 메뉴를 이용한다.

[플러그인 관리 페이지] 

p1

HowdyNotices 메뉴가 왼쪽에 추가되었다. 이 플러그인 관련 포스트 및 메타 테이터 설정이 가능하다.

[관리자 페이지에 플러그인 추가]p2

소스코드를 보면 관리 페이지 등록을 위해서는 register_post_type()과 이를 호출할 액션훅이 필요하다는 걸 알 수 있다.

// 플러그인이 활성화 될 때 플러그인을 등록하는 함수를 호출한다.
add_action('init', 'Howdy_create_notices');

Howdy_create_notices()에서 관리자 화면에 보일 메뉴명을 배열로 등록하고 register_post_type()을 호출하면 모든 준비가 끝난다. 나머지 기반 구조(포스트 등록 화면, 변경, 삭제, 메타 데이터 관련 편집화면 …)는 워드프레스에서 기본으로 제공한다. 기존 템플릿 페이지를 호출하기 때문에 별도 등록용 페이지를 만들 필요가 없다.

function Howdy_create_notices() {
    $labels = array(
     'name' => _x( 'HowdyNotices', 'post type general name' ), // Tip: _x('') is used for localization
    'singular_name' => _x( 'HowdyNotice', 'post type singular name' ),
    'add_new' => _x( 'Add New', 'Notice' ),
    'add_new_item' => __( 'Add New Notice' ),
    'edit_item' => __( 'Edit Notice' ),
    'new_item' => __( 'New Notice' ),
    'view_item' => __( 'View Notice' ),
    'search_items' => __( 'Search Notices' ),
    'not_found' => __( 'No Notices found' ),
    'not_found_in_trash' => __( 'No Notices found in Trash' ),
    'parent_item_colon' => ''
    );
    $notice_args = array(
    'labels' => $labels,
    'singular_label' => __('Notice', 'simple-notices'),
    'public' => true,
    'show_ui' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'rewrite' => false,
    'supports' => array('title', 'editor'),
    );
    register_post_type('howdynotices', $notice_args);
}

 

 

[Howdy Notices 관리자 페이지]
p3

 
 

태그: , ,