제로에서 시작하기: WordPress 플러그인 개발을 위한 완벽한 가이드 및 실습 튜토리얼

3분 읽기
2026-03-12
2026-06-04
2,455
아래 링크를 통해 쇼핑하면 추가 비용 없이 수수료를 받을 수 있습니다.

준비 작업 및 환경 구축

코드를 작성하기 시작하기 전에, 안정적이고 효율적인 개발 환경을 갖추는 것이 매우 중요합니다. 이는 플러그인이 향후 개발 과정에서도 명확한 구조를 유지할 수 있도록 도와줄 뿐만 아니라, 현대적인 도구들을 활용하여 작업 효율성을 높일 수 있게 해줍니다.

로컬 개발 환경 설정

우리는 Local by Flywheel, XAMPP 또는 MAMP와 같은 로컬 서버 환경을 사용할 것을 권장합니다. 이러한 도구들을 사용하면 컴퓨터에서 Apache/Nginx, MySQL, PHP가 포함된 WordPress 실행 환경을 빠르게 설정할 수 있습니다. 사용하는 PHP 버전이 대상 서버의 버전과 호환되는지 확인하시고, 오류 보고 기능을 활성화해 주세요. 이를 통해 개발 초기 단계에서 문제를 신속하게 찾아낼 수 있습니다.

코드 편집기 및 도구 선택

강력한 기능을 갖춘 코드 편집기를 선택하는 것이 첫 번째 단계입니다. 예를 들어, Visual Studio Code, PhpStorm, Sublime Text 등이 있습니다. 이러한 편집기들은 일반적으로 구문 강조 표시, 코드 자동 완성 기능, 버전 관리 시스템과의 통합 기능을 제공합니다. 또한, 코드 정리 도구(예: PHP_CodeSniffer)와 디버깅 도구(예: Xdebug)를 설치하면 개발 경험과 코드 품질을 크게 향상시킬 수 있습니다.

추천 읽기 WordPress 테마 개발 완전 가이드: 제로에서 프로페셔널 웹사이트 구축하기

첫 번째 플러그인을 만들어 보세요.

이제 가장 간단한 플러그인을 만드는 것부터 시작하여 WordPress 플러그인의 기본 구조와 활성화 메커니즘을 살펴보겠습니다.

UltaHost의 WordPress 호스팅 서비스
30일 환불 보장, 무제한 대역폭 및 데이터베이스 이용, 무료 DDoS 보호 서비스 제공. 3년 구매 시 50% 용량이 할인됩니다.

플러그인의 주 파일과 기본 헤더 정보

모든 WordPress 플러그인은 반드시 하나의 주요 PHP 파일을 가지고 있어야 하며, 이 파일에는 표준 플러그인 헤더 정보가 포함되어 있어야 합니다. 이를 통해 WordPress가 해당 플러그인을 인식할 수 있습니다. 우리는 ‘my-plugin.php’라는 이름의 파일을 생성해 보겠습니다. my-first-plugin.php 의 파일.

이 코드를 해당 파일에 넣은 다음, WordPress가 설치된 디렉터리로 파일을 업로드하세요. /wp-content/plugins/my-first-plugin/ 폴더 내부.

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于学习的简单 WordPress 插件。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

저장한 후에는 WordPress 관리자의 “플러그인” 페이지에서 이 플러그인을 확인할 수 있으며, “활성화”를 클릭하여 사용할 수 있습니다. 현재로서는 이 플러그인에 특별한 기능이 없지만, WordPress에서 인정하는 플러그인을 성공적으로 만들었습니다.

플러그인에 설정 페이지를 추가하세요.

플러그인에 백엔드 관리 페이지를 추가하는 것은 흔한 요구 사항 중 하나입니다. 이를 위해 WordPress가 제공하는 기능들을 활용할 수 있습니다. add_menu_page() 또는 add_options_page() 이 기능은 함수를 사용하여 구현됩니다.

추천 읽기 WordPress 플러그인 개발의 궁극적인 가이드: 제로에서 시작하여 전문적인 확장 기능을 구축하는 방법

우리는 주 파일에 코드를 계속 추가하여 간단한 설정 페이지를 만들어 보겠습니다.

// 钩子:在管理员菜单中添加一个新的页面
add_action('admin_menu', 'mfp_add_admin_menu');

function mfp_add_admin_menu() {
    add_options_page(
        '我的插件设置',          // 页面标题
        '我的插件',             // 菜单标题
        'manage_options',       // 所需权限
        'my-first-plugin',      // 菜单slug
        'mfp_settings_page_html' // 用于显示页面内容的回调函数
    );
}

// 设置页面的HTML内容
function mfp_settings_page_html() {
    // 检查用户权限
    if (!current_user_can('manage_options')) {
        return;
    }
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <p>제 첫 번째 플러그인의 설정 페이지에 오신 것을 환영합니다!</p>
        <form action="/ko/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出设置字段(后续可在此添加)
            settings_fields('mfp_options_group');
            do_settings_sections('my-first-plugin');
            submit_button('保存设置');
            ?>
        <input type="hidden" name="trp-form-language" value="ko"/></form>
    </div>
    &lt;?php
}

이 코드는 다음과 같은 기능을 사용합니다: add_action() 후크는 함수를 호출하는 역할을 합니다. mfp_add_admin_menu WordPress에 마운트된 admin_menu 행동 측면에서 보면, 관리자 메뉴가 생성될 때 우리의 함수가 호출되어 “설정” 메인 메뉴에 새로운 하위 메뉴 항목이 추가됩니다. 이 하위 메뉴 항목을 클릭하면 해당 기능이 실행됩니다. mfp_settings_page_html 이 함수는 페이지 콘텐츠를 렌더링하는 역할을 합니다.

워드프레스의 후크와 필터를 이해하기

WordPress의 핵심 철학은 “후크(Hooks)”입니다. 후크를 사용하면 특정 시점이나 위치에 사용자 정의 코드를 삽입하여 WordPress의 기본 기능을 수정하거나 확장할 수 있으며, 이를 위해 핵심 파일을 직접 수정할 필요가 없습니다. 후크는 주로 두 가지 유형으로 나뉩니다: 액션(Action)과 필터(Filter)입니다.

호스팅닷컴 공유 호스팅
AMD EPYC CPU, NVMe SSD 스토리지 및 LiteSpeed를 통한 고성능, 연중무휴 24시간 전문가 사내 지원, SSL, 무차별 공격, 멀웨어 및 DDoS 보호를 포함한 고급 보안 조치, 최대 73%의 비용 절감.

액션 훅의 사용

액션 후크(Action Hook)는 특정 이벤트가 발생할 때 코드를 실행하는 도구입니다. 예를 들어, 글을 게시하거나 관리자 페이지를 로드하거나 페이지 하단의 정보를 출력하는 경우가 이에 해당합니다. 액션 후크는 반환값을 기대하지 않으며, 주로 특정 작업을 수행하는 데 사용됩니다. 우리는 이를 활용하여 웹사이트의 기능을 구현합니다. add_action() 이 함수는 지정된 액션 후크에 콜백 함수를 등록하는 역할을 합니다.

예를 들어, 각 기사의 끝에 자동으로 저작권 정보를 추가하고 싶다면 다음과 같은 방법을 사용할 수 있습니다. the_content 이 필터는 동시에 액션 포인트(Action Point)의 역할도 합니다. 하지만 액션을 더 순수하게(즉, 본질적인 기능에만 집중하여) 보여주기 위해 우리는… wp_footer 후크는 웹사이트의 프론트엔드 페이지 푸터에 정보를 출력합니다.

add_action('wp_footer', 'mfp_add_footer_note');

function mfp_add_footer_note() {
    if (is_single()) { // 仅在文章页面显示
        echo '<p style="text-align:center; color:#666;">이 글은 제 플러그인에 의해 제공되었습니다.</p>';
    }
}

필터 후크의 사용 방법

필터 후크(filter hook)는 데이터가 사용되거나 데이터베이스에 저장되기 전에 그 데이터를 수정하는 데 사용됩니다. 이 후크는 사용자가 하나의 값을 받아 수정한 후 다시 반환하기를 기대합니다. 저희는 이 기능을 사용하고 있습니다. add_filter() 함수를 사용하여 콜백 함수를 마운트합니다.

추천 읽기 WordPress 플러그인 개발 입문 가이드: 제로에서 시작하여 자신만의 맞춤형 기능 모듈을 만들어보세요

전형적인 예시로는 기사 요약의 길이를 수정하는 것을 들 수 있습니다. WordPress의 기본 요약 길이는 55단어입니다. 이를 통해… excerpt_length 필터를 사용하여 그것을 변경할 수 있습니다.

add_filter('excerpt_length', 'mfp_custom_excerpt_length');

function mfp_custom_excerpt_length($length) {
    // 将摘要长度修改为 20 个单词
    return 20;
}

이 예시에서, 함수는 mfp_custom_excerpt_length 기본 길이 값을 받았습니다. $length그런 다음 우리가 정의한 새로운 길이 값인 20을 반환합니다. WordPress는 이 반환된 값을 사용하여 요약문을 생성합니다.

InterServer 공유 호스팅
공유 호스팅 월 $2.50 USD, 첫 달 $0.1 USD 프로모션 코드 tryinterserver, 461개 클라우드 앱 스크립트, 원클릭 설치.

플러그인 보안 및 최고 실천 방법

인기 있는 플러그인을 개발할 때는 보안성, 유지보수성, 성능이 반드시 고려되어야 하는 중요한 요소입니다. 모범 사례를 따르면 많은 일반적인 문제를 예방할 수 있습니다.

데이터 검증, 이스케이피(Escape), 및 정리

절대로 사용자가 입력한 데이터나 데이터베이스에서 가져온 데이터를 그대로 신뢰해서는 안 됩니다. 어떠한 데이터를 처리하기 전에 반드시 검증, 정제, 그리고 이스케이플링(escape) 과정을 거쳐야 합니다.
* 验证(Validation):检查数据是否符合预期的格式或类型(如是否是邮箱、数字等)。可以使用 filter_var() 함수 또는 WordPress의 sanitize_*() 시리즈 함수들. (Series of functions.)
* 清理(Sanitization):清除数据中的非法或危险字符,使其变得安全。对于表单输入,常用 sanitize_text_field()
* 转义(Escaping):在将数据输出到 HTML、JavaScript 或 URL 时,根据上下文进行转义,以防止跨站脚本(XSS)攻击。WordPress 提供了丰富的转义函数,如 esc_html()esc_attr()esc_url() 그리고 wp_kses_post()

예를 들어, 데이터베이스에서 가져온 변수를 안전하게 출력하는 방법은 다음과 같습니다:

// 假设 $user_input 是从数据库或表单获取的数据
echo '<div class="info">'`. esc_html($user_input)`.'</div>';
// 或者,如果允许一些安全的HTML标签
echo '<div class="info">'`. wp_kses_post($user_input)`.'</div>';

플러그인의 국제화 및 현지화 (Plugin Internationalization and Localization)

당신의 플러그인을 전 세계의 사용자들이 사용할 수 있도록 하기 위해서는 번역 기능을 추가해야 합니다. 이 과정을 국제화(i18n)라고 합니다. WordPress는 GNU gettext 프레임워크를 사용하여 이를 구현합니다.

먼저, 번역이 필요한 모든 문자열에 대해 특정 함수를 사용하여 처리해야 합니다. 가장 자주 사용되는 방법은… __()(반환 값용) 그리고 _e()(직접 출력 결과를 반영하기 위해 사용됩니다.)

이전에 생성한 관리 페이지의 제목을 수정해 주세요:

function mfp_settings_page_html() {
    if (!current_user_can('manage_options')) {
        return;
    }
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <p><?php _e('欢迎来到我的第一个插件的设置页面!', 'my-first-plugin'); ?></p>
        ...
    </div>
    &lt;?php
}

참고로, 각 번역 함수에는 ‘my-first-plugin’이라는 텍스트 영역参数가 포함되어 있으며, 이 값은 플러그인의 헤더 정보에 정의된 값과 일치해야 합니다. Text Domain 완전히 일치합니다. 그런 다음 Poedit와 같은 도구를 사용하여 플러그인 코드 내의 번역 가능한 문자열을 스캔하고, 번역 결과를 생성할 수 있습니다. .pot 템플릿 파일을 생성하고, 다양한 언어에 맞는 파일들을 만들어야 합니다. .po 그리고 .mo 변환된 파일을 플러그인 디렉터리에 저장하세요. /languages/ 폴더 안에 있습니다.

요약

이 가이드를 통해 우리는 WordPress 플러그인 개발의 핵심 과정을 체계적으로 살펴보았습니다. 로컬 환경을 설정하고 표준 헤더 정보가 포함된 메인 파일을 생성하는 것부터, 액션(Action)과 필터(Filter) 훅을 활용하여 WordPress 코어와 심층적으로 상호작용하는 방법까지, 그리고 매우 중요한 보안 관리 및 국제화 준비까지, 기능이 완전하고 안전하며 신뢰할 수 있는 플러그인을 만드는 데 필요한 기초 지식을 습득하셨습니다. 우수한 플러그인은 명확한 코드 구조, 엄격한 보안 처리, 그리고 세심한 사용자 경험에서 비롯된다는 점을 기억하세요. 이제 가장 좋은 학습 방법은 실제로 직접 해보는 것입니다. 작은 문제를 해결하는 플러그인부터 시작하여 점차 더 복잡한 API와 기능들을 탐구해 나가보세요.

자주 묻는 질문

###: WordPress 플러그인을 개발하기 위해 어떤 기초 지식이 필요한가요?

PHP 프로그래밍 언어를 숙달해야 합니다. 이는 WordPress의 핵심 개발 언어입니다. 또한, HTML, CSS, JavaScript에 대한 기본적인 이해가 필요하며, 이를 통해 프론트엔드의 디스플레이와 상호작용을 처리할 수 있습니다. MySQL 데이터베이스의 기본 개념(예: CRUD 작업)에 익숙해지는 것도 도움이 됩니다. 왜냐하면 WordPress는 데이터를 저장하기 위해 MySQL을 사용하기 때문입니다. 마지막으로, WordPress의 기본 아키텍처와 작동 방식을 이해하는 것이 매우 중요합니다.

내 WordPress 플러그인을 어떻게 디버깅하나요?

먼저, wp-config.php 파일에서 WordPress의 디버깅 모드를 활성화하세요. define('WP_DEBUG', true); 그리고 define('WP_DEBUG_LOG', true); `true`로 설정하세요. 이렇게 하면 오류 메시지가 `/wp-content/debug.log` 파일에 기록되어 방문자에게 직접 표시되지 않습니다. 또한, Xdebug와 같은 전문 디버깅 도구를 코드 편집기(예: VS Code)와 통합하면 중단점 설정, 단계별 디버깅과 같은 고급 기능을 사용할 수 있습니다. 추가로, 브라우저의 개발자 도구의 네트워크 및 콘솔 패널을 활용하면 AJAX 요청과 프론트엔드 JavaScript 오류를 확인할 수 있습니다.

제가 개발한 플러그인을 WordPress 공식 플러그인 디렉터리에 어떻게 제출할 수 있을까요?

제출하기 전에, 귀하의 플러그인이 WordPress 공식의 코딩 표준과 모범 사례를 완전히 준수하고 있는지 확인하시기 바랍니다. 또한, 코드를 철저히 검토하고 보안 검사를 실시해 주십시오. WordPress.org 계정을 등록한 후, 플러그인 제출 페이지를 통해 압축된 플러그인 파일을 제출해 주세요. 심사 팀이 귀하의 코드를 검토하여 보안성, 적법성을 확인하고 관련 지침을 준수하는지 확인할 것입니다. 심사를 통과하면, 귀하의 플러그인은 공식 디렉터리에 등재되어 전 세계 사용자들이 다운로드하고 설치할 수 있게 됩니다.

어떻게 제 플러그인에 설정 옵션을 추가하여 WordPress 사용자 정의자에 표시할 수 있을까요?

WordPress의 커스터마이저(Customizer)는 실시간으로 설정 내용을 미리 볼 수 있는 기능을 제공합니다. 사용하시면 편리하게 웹사이트의 디자인이나 기능을 변경할 수 있습니다. add_action('customize_register', 'your_function'); 후크(Hook). 콜백 함수 내에서 사용됩니다. your_function 중, 통해 $wp_customize 객체에는 섹션(Section) 하나, 설정 항목(Setting) 하나, 그리고 컨트롤러(Control) 하나가 추가됩니다. 이를 통해 사용자는 커스터마이저 인터페이스에서 옵션을 조정하고 실시간으로 프론트엔드의 변경 결과를 확인할 수 있으며, 테마나 플러그인의 외관 관련 설정을 관리하는 데 매우 유용합니다.