Skip to content
This repository has been archived by the owner on Jun 27, 2019. It is now read-only.
changwoo edited this page Apr 28, 2015 · 3 revisions

Axis Framework - A WordPress Plugin Framework

액시스 프레임워크(Axis Framework, 이하 액시스)는 MVC 기반의 워드프레스 플러그인 작성을 지원하기 위한 작은 규모의 프레임워크입니다.

소개

액시스는 워드프레스 플러그인 또는 템플릿 개발에 있어 MVC 패턴을 쉽게 도입할 수 있도록 합니다. 또한 액시스의 부트스트랩-콜백 오브젝트 구조는 플러그인 제작에 있어 빈번히 반복되는 기능(예를 들어 관리자 화면 메뉴나 플러그인 활성/비활성화 콜백)들을 손쉽게 구성할 수 있게, 마치 '할 일 목록'처럼, 도움을 줍니다.

다운로드

GitHub에서 다운로드 받을 수 있습니다. 또는 아래 명령을 콘솔 창에 입력해도 됩니다.

git clone https://github.com/chwnam/axis-framework.git

설치

버전 0.10.1000 이후로 액시스는 워드프레스 플러그인 형태로 제공이 됩니다. 다른 플러그인과 마찬가지로 다운로드 받은 디렉토리를 워드프레스 플러그인 디렉토리(보통, wordpress/wp-content/plugins)에 놓아 두면 워드프레스가 자동으로 인식할 것입니다. 또는 워드프레스 Must-Use 플러그인 디렉토리(보통, wordpress/wp-content/mu-plugins. Must Use Plugins 코덱스 참고)에 놓고 쓰셔도 무방합니다.두 경우 모두 액시스를 사용하는 플러그인에서 액시스의 경로만 올바르게 설정해 주면 됩니다.

참고로 Must Use Plugin 형태로 사용하는 경우는 워드프레스에서 무조건 사용된다고 가정하기 때문에 '활성화' 메뉴가 나타나지 않습니다. 또 일반적인 플러그인 경로에 설치했을 때에도 액시스 플러그인을 활성화할 필요는 없습니다.

톺아보기

생짜로 플러그인 짜기

톺아보기는 워드프레스 플러그인을 적어도 한 번 정도는 작성해 본 경험이 있는 독자를 기준으로 서술됩니다. 만약 플러그인 개발에 대해 경험이 없으신 분은 먼저 워드프레스 플러그인 만들기(다른 링크, PDF 버전) 문서를 참고하시기 바랍니다.

액시스로 플러그인 작성하기

액시스의 방법

액시스를 사용하게 되면 생짜로 작성하는 플러그인과는 달리 액시스만의 규칙을 따르게 됩니다. 이는 코드를 보다 일관성 있게 작성, 관리하기 위한 수단입니다.

액시스의 주요 개념

액시스에는 두 가지 주요 계층이 있습니다. 하나는 '부트스트랩-콜백 오브젝트'이며, 다른 하나는 'MVC' 입니다.

부트스트랩과 콜백 오브젝트

여러분의 플러그인 코드를 MVC 관점에서 구성하고 동작시키기 위해 액시스는 우선 '부트스트랩(bootstrap)'과 '콜백 오브젝트(callback object)'를 필요로 합니다. 워드프레스 코어는 MVC 패턴(혹은 그와 유사한 패턴)을 지원하지 않으므로 단숨에 MVC 프레임이 정상적으로 돌아가기는 어렵습니다. MVC가 제 역할을 다할 수 있도록 먼저 바탕을 준비하는 것이 바로 부트스트랩과 콜백 오브젝트의 역할입니다.

부트스트랩은 액시스 기반의 플러그인 코드에서 가장 먼저 생성되는 객체이며 플러그인에 필요한 준비를 지시합니다. 플러그인이 실행되면서 초기화되어야할 모든 사항이 부트스트랩에서 정의됩니다.

부트스트랩이 실행되면 콜백 오브젝트를 생성합니다. 콜백 오브젝트는 플러그인에서 사용될 모든 훅, 필터를 선언하고 그 콜백을 담당하는 객체입니다. 보통 액션과 필터 선언은 플러그인 코드의 여러 군데에 흩뿌려지는 경우가 많습니다. 이렇게 되면 나중에 코드를 보고 그 흐름을 따라가기가 매우 어렵게 됩니다. 액시스는 액션, 필터 선언을 콜백 오브젝트 단위로 묶어서 관리합니다.

몇몇 액션 혹은 필터는 플러그인 동작의 주요 진입점이 됩니다. 이를테면 메뉴, 로컬라이징, AJAX, admin-post, 플러그인 세팅 메뉴 등입니다. 이런 액션들은 플러그인의 기능을 추적하기 위한 좋은 단서가 되며, 또한 콜백 오브젝트로 생성하기 위한 좋은 단위가 됩니다. 액시스는 기본적으로 admin-post, AJAX, 메뉴, 플러그인 기본, 세팅 메뉴에 대해 기본 콜백 오브젝트를 정의해 두고 있습니다. 또한 콜백 오브젝트는 여러분들이 플러그인을 만들면서 필요에 의해 확장할 수 있습니다.

콜백 오브젝트는 액션/필터 선언과, 해당 액션/필터의 콜백 함수로 구성되어 있습니다. 이 콜백 함수에서 비로소 액시스의 MVC가 동작하게 됩니다.

MVC

일반적으로 액시스의 MVC는 콜백 함수 위에서 동작하는 방식으로 설계되었습니다. 일반적으로는 콜백 함수는 단지 클라이언트를 위한 HTML 내용 일부를 출력하는 것만으로 충분하고 콜백 함수가 코어에 어떤 결과를 반환할 필요가 없습니다. 그러나 쇼트코드의 콜백 같은 일부 상황에서는 콜백 함수가 코어에 반드시 값을 반환해야 합니다. 액시스는 플러그인 개발에 있어 이러한 흐름을 자연스럽게 노출하였습니다. 개발자는 콘트롤러를 사용하면서 값을 반환할지 아닐지를 스스로 결정해야 합니다.

보통 콘트롤러는 콜백 함수 내부 상황에서 해야 할 일의 단위라고 생각할 수 있습니다. 콘트롤러에서 가공해야 할 자료는 모델에서 가져 옵니다. 모델은 주로 워드프레스 데이터베이스와 통신하여 원하는 자료를 가져오는 역할을 맡습니다. 한편 뷰는 사용자에게 보여 줄 일의 결과 형태로 생각할 수 있습니다. 그러므로 요약하면,

  • 콘트롤러: 로직 담당
  • 모델: 자료 담당
  • 뷰: 발표 담당

이렇게 일의 각 부분을 분담함으로써 코드 관리가 용이해집니다. 더 이상 데이터베이스 쿼리와 PHP 코드, 그리고 HTML 코드나 자바스크립트 코드가 난삽하게 범벅이 된 소스를 작성하지 마세요.

각 구성 요소

부트스트랩
콜백 오브젝트
콘트롤러
모델
뷰 - 심플 뷰
뷰 클래스 - 템플릿