Joo-Kwang Park

Joo-Kwang Park

Developer

© 2021

Dark Mode

워드프레스 플러그인, wppb로 쉽게 개발해보기

최근에 워드프레스 기반의 프로젝트를 진행하여 워드프레스 플러그인을 개발할 필요가 있었다. 사용자는 자신이 등록한 것에 대한 진행사항을 볼 수가 있다. 이러한 진행사항은 관리자가 관리자 페이지에서 사용자 별로 입력을 해주는 시스템을 만들어야 했었다. 기본적으로 사용자에게 보여줄 페이지는 shortcode를 만들고 페이지 하나 만든 뒤에 shortcode에서 만든 템플릿을 보여주면 된다. 관리자 페이지에서는 좌측 메뉴에 진행사항을 입력할 수 있는 메뉴를 만들고, 이를 위한 페이지를 하나 만들어서 보여주면 된다. 하지만, 이러한 과정은 보기엔 간단하더라도 추후 기능이 추가되고 관리를 위해서는 구조적인 소스코드로 진행을 하는 것이 좋다. 과거에는 직접 플러그인 코드를 짜기 위해서 하나하나 만들었었는데, 최근에 아주 좋은 도구가 있어서 공유하려고 한다.

WPPB는 WordPress Plugin Boilerplate 생성기이다. 플러그인 이름, 플러그인 슬러그, 플러그인 주소, 플러그인 작성자 이름, 플러그인 작성자 이메일 그리고 플러그인 작성자 주소만 입력해주면 기본적인 플러그인 정보가 담긴 코드를 내려받을 수 있다. 내려 받은 압축 파일을 풀면 다음과 같은 소스코드 구조를 확인할 수 있다.

├── LICENSE.txt
├── README.txt
├── admin
│   ├── class-jkpark-plugin-admin.php
│   ├── css
│   │   └── jkpark-plugin-admin.css
│   ├── index.php
│   ├── js
│   │   └── jkpark-plugin-admin.js
│   └── partials
│       └── jkpark-plugin-admin-display.php
├── includes
│   ├── class-jkpark-plugin-activator.php
│   ├── class-jkpark-plugin-deactivator.php
│   ├── class-jkpark-plugin-i18n.php
│   ├── class-jkpark-plugin-loader.php
│   ├── class-jkpark-plugin.php
│   └── index.php
├── index.php
├── jkpark-plugin.php
├── languages
│   └── jkpark-plugin.pot
├── public
│   ├── class-jkpark-plugin-public.php
│   ├── css
│   │   └── jkpark-plugin-public.css
│   ├── index.php
│   ├── js
│   │   └── jkpark-plugin-public.js
│   └── partials
│       └── jkpark-plugin-public-display.php
└── uninstall.php

관리자 페이지에 대한 것은 admin 폴더에서 코드를 작성하면 되고, 사용자 페이지에 대한 것은 public 폴더에서 코드를 작성하면 된다. 기본적으로 로컬라이징을 위하여 언어 관리를 기본적으로 할 수 있도록 제공하고 있다.

각 파일에 대해서 간단하게 설명을 하자면,

  • {your-plugin-name}.php
    • 플러그인의 시작 파일이다. 여기에서 추가적으로 플러그인 설명이나 라이센스를 변경할 수 있다.
    • 플러그인 버전을 수정할 수 있다.
    • 플러그인을 초기화한다. 별 다른 문제가 없는 이상 수정할 일이 없다.
  • includes/class-{your-plugin-name}-activator.php
    • 플러그인을 활성화 했을 때 불리우는 activate 함수가 존재한다.
    • 새로운 테이블을 추가하거나 수정할 필요가 있을 때 본 파일에서 로직을 추가하면 된다.
  • includes/class-{your-plugin-name}-deactivator.php
    • 플러그인을 비활성화 했을 때 불리우는 deactivate 함수가 존재한다.
    • 테이블을 drop 하거나, 플러그인 비활성화 할 때 수행이 필요한 로직을 추가하면 된다.
  • includes/class-{your-plugin-name}-i18n.php
    • 로컬라이징을 위한 text domain 처리를 수행한다.
  • includes/class-{your-plugin-name}-loader.php
    • 워드프레스에서 제공하는 filter나 action을 쉽게 등록하기 위한 helper 메소드가 정의되어 있다.
    • loader를 통해서 다른 클래스에서 filter나 action을 등록할 수 있다.
  • includes/class-{your-plugin-name}.php
    • 플러그인의 핵심적인 조합 파일로써, 관리자 또는 사용자를 위한 스크립트나 스타일을 로드할 수 있는 로직과 위 includes 폴더 내의 있는 다른 의존성 있는 파일을 로드하기 위한 코드가 존재한다. shortcode 등록 또는 ajax 함수 등록도 본 파일에서 하거나, 다른 클래스를 만들어서 불러와서 사용하면 된다.
  • admin 폴더
    • 관리자 페이지에서 수행하기 위한 코드들이 존재한다.
    • class-{your-plugin-name}-admin.php 파일은 관리자 페이지를 위한 스크립트 또는 스타일을 로드한다. 만약 새로운 파일을 로드할 수 있도록 하기 위해서는 본 파일을 수정하면 된다. 관리자 페이지에 관련된 로직을 본 파일에서 작성하거나 새로운 의존 파일을 만들어서 수행하면 된다. 템플릿은 partial 디렉토리에서 관리하면 되고, css와 js 폴더에서 스타일과 자바스크립트 파일을 관리하면 된다.
  • public 폴더
    • admin 폴더와 구조는 동일하지만, 관리자 페이지가 아닌 사용자 페이지에서 사용되는 파일들이다.
  • languages 폴더
    • 로컬라이징을 위한 pot 파일이 존재한다. 다양한 언어를 제공하기 위해서는 본 디렉토리에 여러가지 언어의 pot파일을 저장하면 된다.

이와 같이, 워드프레스 플러그인 개발을 위한 소스코드 뼈대를 제공해주는 아주 좋은 오픈소스 프로젝트라고 볼 수 있다. GitHub에는 다양한 Wordpress Plugin Boilerplate 들이 존재하지만, 개인적으론 WPPB가 가장 사용하기 쉽고 직관적으로 잘 제공해주는 것 같다. 만약, 워드프레스 플러그인 개발이 필요하면 WPPB를 추천한다.

Comments