Word camp seoul-2012-track3-3

2,348
-1

Published on

워드프레스 플러그인 API의 진화

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,348
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
49
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Word camp seoul-2012-track3-3

  1. 1. 플러그인 API의 짂화 한국 워드프레스 사용자 모임 천 영 민 (082net)
  2. 2. 목 차Ⅰ Action, FilterⅡ FunctionsⅢ Pluggable FunctionsⅣ ClassesⅤ 관리자 화면
  3. 3. Action 과 Filter http://codex.wordpress.org/Plugin_API 어떠한 이벤트가 발생할 때 특정 지점(시점)에서 플러 그인이 등록한 작업을 수행. Action add_action(‘hook’, ‘function’, [priority], [accepted_args]); 워드 프레스가 특정 내용을 데이터베이스에 추가하거 나 브라우저 화면에 보내기 젂에 다양한 종류의 텍스트 Filter 혹은 개체를 수정하고 필터링 함. add_action(‘hook’, ‘function’, [priority], [accepted_args]);
  4. 4. Action – 어디서? http://codex.wordpress.org/Plugin_API/Action_Reference
  5. 5. Action – 어떻게?add_action ( ‘hook_name’, ‘your_function_name’, [priority], [accepted_args] );hook_name(필수) 워드프레스가 제공하는 action hook의 이름your_function_name(필수) 실제 action을 취할 자신이 작성한 혹은 워드프레스에서 제공하는 함수의 이름priority(선택) 해당 action에서의 실행 우선 순위(기본값 10). 낮은 숫자일수록 먼저 실행됨.accepted_args(선택) 실행 함수에서 사용할 인자의 개수(기본값 1).
  6. 6. Filter http://codex.wordpress.org/Plugin_API/Filter_ReferenceFilter 는 특정값을 받아서 용도와 목적에 맞게 홗용/수정 한 뒤 반홖(return)한다는 점 외에는 Action과동일하다고 봐도 무방함.add_filter ( ‘hook_name’, ‘your_filter’, [priority], [accepted_args] );
  7. 7. wp-includes/plugin.phpFunctions http://codex.wordpress.org/Plugin_API
  8. 8. Pluggable FunctionsAction, Hook 와는 다르게 pluggable 함수들은 워드프레스의 함수 자체를 플러그인에서 갂섭이 아닌 대체를 할수 있다. 워드프레스 자체적으로 일정부분의 hack을 가능하도록 해 둔 것이다.모든 플러그인들이 로드 된 뒤에 인식하게 됨.대표적인 Pluggable 함수들 사용자 인식function wp_set_current_user($id, $name = ) {}function wp_mail( $to, $subject, $message, $headers = , $attachments = array() ) {} 메일 발송function wp_authenticate($username, $password) {} 보안관렦function check_admin_referer($action = -1, $query_arg = _wpnonce) {}function wp_redirect($location, $status = 302) {} 아바타function wp_notify_postauthor( $comment_id, $comment_type = ) {}function wp_salt($scheme = auth) {}function wp_generate_password( $length = 12, $special_chars = true, $extra_special_chars = false ) {}function get_avatar( $id_or_email, $size = 96, $default = , $alt = false ) {}function wp_text_diff( $left_string, $right_string, $args = null ) {}
  9. 9. Hidden Constants wp-config.phpdefine( ALTERNATE_WP_CRON, true );워드프레스 기본 CRON 방식에서 오류가 자주 발생 할 경우 사용. (예: Missed schedule 오류)define ( WP_ALLOW_MULTISITE, true );워드프레스의 MultiSite 네트웍을 적용하려고 할 때 사용.define ( CUSTOM_USER_TABLE, my_custom_user_table );define ( CUSTOM_USER_META_TABLE, my_custom_user_meta_table );주로 따로 설치된 워드프레스 User 테이블을 함께 사용하고자 할 때 사용됨.define ( WP_POST_REVISIONS, false );워드프레스에서 글을 저장할 때 버젂별로 모두 기억하는 기능(Revisions)을 쓰고 싶지 않을 때.define ( SCRIPT_DEBUG, false );javascript나 CSS 내용을 디버깅 해 볼 때 사용.define ( CONCATENATE_SCRIPTS, false );워드프레스 관리자 화면에서 javascript나 css를 한 파일에 모아서 출력하는 기능을 사용하지 않을 때.define( WP_ALLOW_REPAIR, true ); // (대형 사이트의 경우는 console에서 직접 처리하는 것이 유리.)MySQL 데이터베이스를 자동으로 복구 해 줄 때 사용. (http://{SITE_URL}/wp-admin/maint/repair.php)define( IMAGE_EDIT_OVERWRITE, true );업로드한 이미지를 수정 한 뒤 웎본을 복구할 때 수정되었던 이미지 파일을 삭제하고 싶을 때.
  10. 10. Classes wp-includes/class-*.php현재 워드프레스의 핵시 코어 기능들이 하나 둘 API의 형태를 갖추어 가고 있으며, 플러그인 개발자들은 손쉽게 해당 API를 이용해 다양한 기능들을 손쉽게 구현할 수 있다. 워드프레스의 에디터(TinyMCE 포함)를 손쉽게 구현하여 홗용할 수 있다. class _WP_Editors (wp-includes/class-wp-editor.php) 루핑되는 데이터 출력을 계단형 구조까지도 손쉽게 – 예: 카테고리 드롭다욲, 체크박스 등. class Walker (wp-includes/class-wp-walker.php) 다양한 종류의 멀티미디어 자료를 본문에 손 쉽게 넣을 수 있도록 함. 예: youtubue의 경우 동영상 주소만 insert 해도 자동으로 해당 영상의 object 코드를 삽입하여 줌. class WP_oEmbed (wp-includes/class-oembed.php) MySQL query문 작성에 자싞이 없는 개발자 들도 효율적으로 웎하는 custom 정보에 접근 할 수 있도록. class WP_User_Query (wp-includes/user.php) class WP_Comment_Query (wp-includes/comment.php) class WP_Meta_Query (wp-includes/meta.php) 관리자 화면의 Posts, Comments 등과 같은 테이블 리스트 형태를 손쉽게 구현 가능. class WP_List_Table (wp-admin/includes/class-wp-list-table.php) 다양한 종류의 여타 플랫폼의 데이터를 워드프레스로 끌어올 수 있는 기본 포멧을 제공. class WP_Importer (wp-admin/includes/class-wp-importer.php) 데이터 파일, 플러그인 파일 등을 새로 업그레이드 하는 기본 포멧을 제공. class WP_Upgrader (wp-admin/includes/class-wp-upgrader.php)
  11. 11. 다양한 Custom TypesCustom Post TypesPost Type 이라고 되어있긴 하지만, ‘글’의 개념 안에서만 생각하기에는 그 틀이 너무 아깝다.실제로 부동산 사이트, 쇼핑몰 사이트, 포트폴리오 사이트 등에서는 custom post type을 홗용해서 다양한 방법으로 컨텎츠를 출력/제공 하고, 깔끔한 접속 URL까지 구현할 수 있다.판매하는 상품, 이벤트에 참여하는 사람, 티켓, 스케줄 정보, 이벤트 등등 상상 가능한 모든 것을 등록할수 있으며, 이것들을 글/목록을 출력할 때와 동일하게 Query 및 출력을 할 수 있다.Custom Taxonomy 와 조합한다면 그 응용분야는 더욱 더 확대된다.기본 참고 함수:function register_post_type($post_type, $args = array()) {}워드프레스에서는 post, page, nav menu, attachment, revision 등의 type을 등록해서 사용하고 있다.Custom Taxonomy모든 종류의 분류를 지정할 수 있으며, tree 형식(nested)의 구조 또한 기본 지웎하고 있어, 상상하고 계획한 분류를 손쉽게 구현하고 적용할 수 있다.위에서 얶급했듯이, Custom Post Type과 조합하여 주로 사용된다.기본 참고 함수:function register_taxonomy( $taxonomy, $object_type, $args = array() ) {}워드프레스 에서는 category, post tag, nav menu, post format 등의 분류를 등록해서 사용하고 있다.
  12. 12. 관리자 영역 wp-admin/includes/plugin.php SCREEN META BOX LIST TABLE class WP_Screen(); add_meta_box() class WP_List_Table(); 모든 관리자 화면 Dashboad Admin > Posts wp-admin/includes/ wp-admin/includes/ wp-admin/includes/ screen.php dashboard.php class-wp-list-table.php
  13. 13. 관리자 영역 Admin > Posts ( wp-admin/edit.php )SCREEN + LIST TABLE 현재 Screen에 등록된 Columns 기준
  14. 14. 관리자 영역 Admin > Appearance > Menus ( wp-admin/edit.php )SCREEN + META BOXES 참고할 Javascript 파일들 // Nav Menu functions wp-admin/js/nav-menu.dev.js // Metaboxes wp-admin/js/common.dev.js wp-includes/js/wp-lists.dev.js wp-admin/js/postbox.dev.js
  15. 15. 고맙습니다!한국 워드프레스 사용자 모임 http://kopress.kr/

×