Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Word camp seoul-2012-track3-3

2,650 views

Published on

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

Published in: Technology
  • Be the first to comment

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/

×