WordPress 플러그인 제작 방법: 단계별 가이드




개요

WordPress 플러그인은 웹사이트의 기능을 확장하는 가장 강력한 도구입니다. 이 글에서는 WordPress 플러그인을 개발하는 방법을 처음부터 끝까지 상세히 설명합니다. 기본적인 플러그인 구조부터 설정 페이지 추가, 데이터베이스 연동, AJAX 처리, 보안 고려 사항까지 다룹니다.


1. WordPress 플러그인이란?

WordPress 플러그인은 PHP로 작성된 확장 모듈로, 기존 WordPress 기능을 변경하거나 새로운 기능을 추가할 수 있습니다.

1.1. 플러그인의 주요 기능

  • 기본 기능 확장 (예: SEO 최적화, 보안 강화)
  • 관리자 페이지 추가 (설정 화면)
  • 데이터베이스와 상호작용
  • 단축코드(Shortcode) 제공
  • AJAX를 활용한 동적 기능 추가

1.2. 플러그인 개발을 위한 사전 준비

  • PHP, HTML, CSS, JavaScript 기본 지식
  • WordPress의 구조 및 동작 방식 이해
  • 로컬 개발 환경 구축 (Docker 또는 Local by Flywheel 등 사용 가능)

2. 기본 플러그인 구조 및 개발

2.1. 플러그인 폴더 및 파일 생성

WordPress 플러그인은 /wp-content/plugins/ 디렉터리에 위치합니다.

cd wp-content/plugins/
mkdir my-first-plugin
cd my-first-plugin
touch my-first-plugin.php

2.2. 플러그인 기본 파일 구성

my-first-plugin.php 파일을 열고 아래와 같이 플러그인 메타 정보를 추가합니다.

<?php
/*
Plugin Name: My First Plugin
Plugin URI: https://example.com/
Description: 첫 번째 WordPress 플러그인 예제
Version: 1.0
Author: 개발자명
Author URI: https://example.com/
License: GPL2
*/

이제 WordPress 관리자 → 플러그인 메뉴에서 플러그인을 활성화할 수 있습니다.


3. 기본 기능 추가 (예제: 간단한 Shortcode 만들기)

Shortcode는 [my_shortcode]와 같은 형태로 글이나 페이지에서 특정 기능을 실행할 수 있도록 해줍니다.

3.1. Shortcode 등록하기

my-first-plugin.php 파일에 다음 코드를 추가합니다.

function my_custom_shortcode() {
    return "<p>이것은 사용자 정의 Shortcode 출력입니다.</p>";
}
add_shortcode('my_shortcode', 'my_custom_shortcode');

3.2. Shortcode 사용 방법

WordPress 글 또는 페이지에 다음 코드를 입력하면 적용됩니다.

[my_shortcode]

4. 관리자 페이지 추가하기

플러그인 설정을 위한 관리자 페이지를 추가하려면 아래 단계를 따릅니다.

4.1. 관리자 메뉴 추가

my-first-plugin.php 파일에 아래 코드를 추가합니다.

function my_plugin_menu() {
    add_menu_page(
        'My Plugin 설정',
        'My Plugin',
        'manage_options',
        'my-plugin-settings',
        'my_plugin_settings_page'
    );
}
add_action('admin_menu', 'my_plugin_menu');

4.2. 설정 페이지 출력 함수

function my_plugin_settings_page() {
    echo "<h1>My First Plugin 설정 페이지</h1>";
    echo "<p>여기에 설정을 추가할 수 있습니다.</p>";
}

이제 WordPress 관리자 메뉴에 “My Plugin”이라는 메뉴가 생성되며 클릭하면 설정 페이지가 표시됩니다.


5. 데이터베이스 연동하기

WordPress는 기본적으로 wpdb 클래스를 사용하여 데이터베이스와 상호작용할 수 있습니다.

5.1. 데이터베이스 테이블 생성

플러그인 활성화 시 실행될 코드 추가:

function my_plugin_install() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'my_custom_table';
    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        name tinytext NOT NULL,
        email varchar(100) NOT NULL,
        PRIMARY KEY  (id)
    ) $charset_collate;";

    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    dbDelta($sql);
}
register_activation_hook(__FILE__, 'my_plugin_install');

5.2. 데이터 삽입 및 조회

// 데이터 삽입
function insert_data() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'my_custom_table';

    $wpdb->insert($table_name, array(
        'name' => '홍길동',
        'email' => 'hong@example.com'
    ));
}

// 데이터 조회
function get_data() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'my_custom_table';
    $results = $wpdb->get_results("SELECT * FROM $table_name");

    foreach ($results as $row) {
        echo "<p>{$row->name} - {$row->email}</p>";
    }
}

6. AJAX를 활용한 비동기 처리

AJAX를 활용하면 페이지 새로고침 없이 데이터를 주고받을 수 있습니다.

6.1. AJAX 핸들러 등록

my-first-plugin.php 파일에 아래 코드를 추가합니다.

function my_ajax_function() {
    $name = sanitize_text_field($_POST['name']);
    echo "안녕하세요, {$name}님!";
    wp_die();
}
add_action('wp_ajax_my_ajax_action', 'my_ajax_function');
add_action('wp_ajax_nopriv_my_ajax_action', 'my_ajax_function');

6.2. 프론트엔드에서 AJAX 호출

<script>
jQuery(document).ready(function($) {
    $("#submit-btn").click(function() {
        $.post(ajaxurl, {
            action: 'my_ajax_action',
            name: $("#name-input").val()
        }, function(response) {
            $("#result").html(response);
        });
    });
});
</script>

<input type="text" id="name-input">
<button id="submit-btn">보내기</button>
<div id="result"></div>

7. 플러그인 보안 고려 사항

WordPress 플러그인을 개발할 때 보안 문제를 반드시 고려해야 합니다.

입력 데이터 검증 (sanitize_text_field(), esc_sql())
출력 데이터 이스케이프 (esc_html(), esc_attr())
권한 검사 (current_user_can('manage_options'))
비밀번호 및 API 키 암호화 저장 (wp_hash_password())


8. 플러그인 배포 및 활용

플러그인을 완성했다면, WordPress.org 플러그인 디렉터리에 업로드하거나 직접 배포할 수 있습니다.

8.1. 플러그인 배포 준비

  1. readme.txt 파일 작성 (플러그인 설명 포함)
  2. WordPress.org 개발자 계정 생성
  3. 플러그인 SVN 저장소 등록

결론

이제 기본적인 WordPress 플러그인을 개발할 수 있습니다. 더 나아가 REST API 연동, WooCommerce 확장, Gutenberg 블록 개발 등 다양한 방식으로 기능을 확장할 수 있습니다.




Leave a Comment