처음부터: 첫 워드프레스 플러그인 구축하기

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

처음부터: 첫 워드프레스 플러그인 구축하기

워드프레스 플러그인 개발은 워드프레스 핵심 기능을 확장하는 주요 방법입니다. 플러그인을 만들면 테마나 핵심 파일을 수정하지 않고도 사이트에 사용자 정의 기능을 추가할 수 있으며, 이는 기능의 독립성과 이식성을 보장합니다. 표준 플러그인은 일반적으로 주 PHP 파일, 선택적인 리소스 파일(예: CSS, JavaScript)과 언어 패키지로 구성되어 있습니다. 플러그인의 기본 구조를 이해하는 것은 성공적인 개발의 첫 번째 단계입니다.

WordPress 플러그인의 기본 구조와 생성 방법

플러그인의 가장 기본적인 형태는 다음과 같습니다./wp-content/plugins/카테고리 아래의 폴더. 이 폴더에는 적어도 하나의 주요 PHP 파일이 포함되어야 하며, 이 파일의 헤더 주석은 WordPress에 플러그인 정보를 제공하는 데 사용됩니다.

플러그인 헤더 주석의 작성

각 플러그인의 주 파일은 특정 PHP 주석 블록으로 시작되어야 하며, 이것은 플러그인 헤더라고 불립니다. WordPress는 이러한 정보를 읽음으로써 관리 인터페이스의 플러그인 목록에서 당신의 플러그인을 인식하고 표시합니다. 표준 헤더 주석은 다음과 같습니다:

추천 읽기 워드프레스 플러그인 개발에 대한 심층 분석: 입문서부터 효율적인 사용자 정화까지

<?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
 */

그중에서,Plugin Name필수입니다. 다른 필드는 선택 사항입니다. 그러나, 플러그인의 완전성과 전문성을 위해서는 가능한 한 모든 정보를 제공하실 것을 권해 드립니다.Text Domain국제화를 위한 것으로, 이후의 플러그인 번역의 기반입니다.

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

플러그인 주 파일과 디렉토리 만들기

먼저,/wp-content/plugins/예를 들어, 카테고리 아래에 새 폴더를 만들어 보세요.my-first-plugin그런 다음 해당 폴더 내에 주 PHP 파일을 생성합니다. 이 파일의 이름은 보통 폴더의 이름과 동일합니다.my-first-plugin.php위의 헤더 주석을 파일에 추가하고 저장한 후, WordPress 관리자의 “플러그인” 페이지에서 그것을 보고 활성화할 수 있습니다. 현재는 아무런 기능도 제공하지 않습니다.

핵심 개발 개념: 동작 후크와 필터

워드프레스의 플러그인 아키텍처는 “후크” 시스템을 기반으로 구축되어 있는데, 이는 플러그인과 핵심 코드가 상호 작용하기 위한 매개 변수입니다. 후크는 주로 두 가지 유형으로 나뉩니다. 동작 후크와 필터 후크입니다.

액션 후크를 이해하고 사용하기

액션 후크는 특정 시점이나 이벤트가 발생할 때 사용자 정의 PHP 코드를 실행할 수 있게 해줍니다. 다음과 같이 사용할 수 있습니다.add_action()함수는 당신의 함수를 후크에 매핑합니다. 예를 들어, 기사의 끝에 자동으로 一段 텍스트를 추가하는 것과 같습니다.

function myplugin_add_footer_text( $content ) {
    if ( is_single() ) {
        $content .= '<p>읽어주셔서 감사합니다!</p>';
    }
    return $content;
}
add_filter( 'the_content', 'myplugin_add_footer_text' );

참고: 이 예제에서는 실제로 필터 후크를 사용하여 내용을 수정합니다. 일반적인 액션 후크 예제는 관리 백엔드에 메뉴를 추가하는 것입니다.

추천 읽기 워드프레스 플러그인 개발을 처음부터 배우기: 첫 번째 사용자 정의 기능을 구축하기

function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',
        '我的插件',
        'manage_options',
        'myplugin-settings',
        'myplugin_settings_page'
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

여기,add_action()함수를 제공하십시오.myplugin_add_admin_menu바인딩되어서admin_menu이 액션 후크는 WordPress가 백엔드 메뉴를 구성할 때 호출됩니다.

필터 후크를 이해하고 사용하기

필터 후크는 워드프레스가 처리 과정에서 생성한 데이터를 수정하는 데 사용됩니다. 당신은 이것을 사용할 수 있습니다.add_filter()당신의 함수를 설치하는 함수. 필터 함수는 입력 값을 받고, 그 값을 수정한 후 수정된 값을 반환해야 합니다. 예를 들어, 기사 제목을 수정하는 경우:

function myplugin_modify_title( $title ) {
    return '精选: ' . $title;
}
add_filter( 'the_title', 'myplugin_modify_title' );

필터는 매우 강력하며, 워드프레스가 생성한 거의 모든 데이터(예: 검색 결과, 텍스트 내용, 옵션 값 등)를 수정하는 데 사용됩니다.

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

플러그인에 설정 페이지와 옵션을 추가하십시오.

잘 작동되는 플러그인은 일반적으로 사용자에게 구성 옵션을 제공해야 합니다. WordPress는 옵션 페이지를 안전하고 표준화된 방법으로 생성하기 위한 설정 API를 제공합니다.

관리 메뉴와 페이지를 만들기

먼저, 당신은 다음을 사용해야 합니다:add_menu_page()또는add_options_page()관리 페이지를 추가하려면 다음 함수를 사용합니다. 우리는 일반적으로 이 작업을 다음과 같이 설정합니다.admin_menu전에 보여드렸던 예처럼 후크에 달려 있습니다. 여기서,myplugin_settings_page설정 페이지의 HTML 내용을 렌더링하는 데 사용되는 콜백 함수입니다.

설정 API 사용하여 등록 옵션 설정

설정 API는 설정을 등록, 검증 및 저장할 수 있는 안전한 방법을 제공합니다. 핵심 단계는 다음과 같습니다: 사용하기register_setting()설정 그룹을 등록하려면 다음을 사용하세요.add_settings_section()설정 블록을 추가하고 사용하세요.add_settings_field()구체적인 설정 필드를 추가하세요.

추천 읽기 WordPress 플러그인 개발 완전 가이드: 초보자부터 전문가까지의 실전 튜토리얼

function myplugin_settings_init() {
    // 注册一个设置
    register_setting( 'myplugin_settings', 'myplugin_options' );

    // 添加一个设置区块
    add_settings_section(
        'myplugin_section_general',
        '通用设置',
        'myplugin_section_general_cb',
        'myplugin-settings'
    );

    // 添加一个设置字段
    add_settings_field(
        'myplugin_field_text',
        '欢迎语',
        'myplugin_field_text_cb',
        'myplugin-settings',
        'myplugin_section_general',
        [ 'label_for' => 'myplugin_field_text' ]
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

그런 다음 해당하는 콜백 함수를 작성해야 합니다.myplugin_section_general_cb그리고myplugin_field_text_cb블록 설명 및 필드의 HTML 입력 상자를 표시하십시오. 마지막으로,myplugin_settings_page함수 내에서 사용하기settings_fields()그리고do_settings_sections()전체 양식을 출력하는 함수.

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

플러그인을 개발할 때 보안이 가장 우선적으로 고려되어야 합니다. 보안이 되지 않은 플러그인은 전체 웹사이트를 위험에 노출할 수 있습니다.

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

데이터 검증, 정리 및 이스케이피(Data Validation, Cleaning, and Escaping)

결코 사용자 입력이나 데이터베이스에서 받은 데이터를 신뢰하지 마십시오. $_POST, $_GET 등 모든 입력을 처리할 때는 반드시 검증 및 정리를 수행해야 합니다. WordPress는 다양한 함수를 제공하며, 이러한 함수들은 다음과 같습니다.sanitize_text_field(), intval(), wp_kses()등. 데이터를 HTML 또는 JavaScript로 출력할 때는 특정 기능(예: escape)을 사용하여 인코딩해야 합니다.esc_html(), esc_attr(), esc_js()그리고wp_json_encode()

// 接收、清理并保存数据
$user_input = sanitize_text_field( $_POST['my_field'] );
update_option( 'my_option', $user_input );

// 安全地输出数据
echo esc_html( get_option( 'my_option' ) );

권한 확인 без CE 사용

모든 플러그인에서 발생하는 백그라운드 서브미션 또는 AJAX 요청의 경우, 워드프레스의 nonce를 사용하여 요청의 합법성과 고유성을 확인해야 하며, 동시에 크로스 사이트 요청 위조 공격을 방지해야 합니다.current_user_can()이 함수는 현재 사용자가 해당 작업을 수행하는 데 필요한 권한이 있는지 여부를 확인합니다.

// 在表单中输出 nonce 字段
wp_nonce_field( 'myplugin_action', 'myplugin_nonce' );

// 在处理请求时验证 nonce 和权限
function myplugin_handle_form_submit() {
    if ( ! isset( $_POST['myplugin_nonce'] ) ||
         ! wp_verify_nonce( $_POST['myplugin_nonce'], 'myplugin_action' ) ||
         ! current_user_can( 'manage_options' ) ) {
        wp_die( '安全校验失败。' );
    }
    // ... 安全地处理数据 ...
}

요약

워드프레스 플러그인 개발은 체계적인 프로젝트로, 기본 구조와 후크 메커니즘을 이해하여 시작되어, 기능을 구현하고 사용자 인터페이스를 만들고, 마지막으로 엄격한 보안 관행을 준수해야 합니다. 워드프레스의 코딩 표준을 준수하고 제공되는 API를 최대한 활용하여, 개발자들은 강력하고 안전하며 유지 보수하기 쉬운 플러그인을 만들 수 있습니다. 핵심은 사용자 정의 기능을 액션과 필터 후크를 통해 워드프레스의 라이프사이클에 원활하게 통합하고, 설정 API를 사용하여 구성을 관리하며, 항상 데이터 검증, 정리, 이스케이프 및 권한 검사를 최우선에 두는 것입니다.

자주 묻는 질문

제 워드프레스 플러그인을 어떻게 디버그할 수 있나요?
WordPress의 디버깅 모드를 활성화하는 것이 첫 번째 단계입니다.wp-config.php파일 내에서, 해당 내용을 처리할 것입니다.WP_DEBUG상수를 다음과 같이 설정합니다:true이렇게 하면 PHP 오류, 경고, 알림이 페이지에 직접 표시됩니다. 보다 복잡한 디버깅을 위해서는 다른 도구를 사용할 수 있습니다.error_log()함수는 서버의 오류 로그에 정보를 기록하거나, 특정 디버깅 플러그인을 사용하여 쿼리, 후크 등의 세부 정보를 확인할 수 있습니다.

제 플러그인은 어떻게 다국어 지원을 구현할 수 있습니까?

워드프레스는 GNU 게트텍스트 프레임워크를 사용하여 국제화를 구현합니다. 먼저, 플러그인 헤더 주석에서 정의해야 합니다.Text Domain플러그인 코드에서, 번역이 필요한 모든 문자열에 를 사용하십시오.__()"Please provide the text you would like to have translated."_e()번역을 하고 바로 출력을 합니다. 그런 다음 Poedit 같은 도구를 사용하여 플러그인 소스 코드에서 문자열을 추출하여 생성합니다..pot템플릿 파일을 만들고, 각 언어에 해당하는 파일을 만들어야 합니다..po그리고 컴파일된 후.mo파일을 다운로드하고 플러그인의 폴더에 저장하십시오./languages/카테고리 아래에.

플러그인의 클래스 이름은 다른 플러그인과 충돌하지 않도록 어떻게 구성되어 있습니까?

클래스, 함수 또는 상수 이름이 충돌하지 않도록 하려면 네임스페이스를 사용하거나 모든 식별자에 고유의 접두사를 추가하는 것이 최선의 방법입니다. PHP 5.3부터는 네임스페이스 사용이 권장됩니다. 예를 들어,namespace MyPluginAdmin;호환성을 고려할 경우에는 프리픽스를 사용해야 하며, 프리픽스는 회사 이름과 플러그인 이름의 약자 조합과 같이 충분히 고유해야 합니다.function acme_myplugin_init() {}클래스 이름은 다음과 같이 정의되어 있습니다.class Acme_MyPlugin_Admin_Settings {}

제 플러그인에 사용자 정의 데이터베이스 테이블을 추가하는 방법은 무엇입니까?

플러그인을 활성화할 때 사용자 정의 테이블을 만드는 것이 최적의 시기입니다. 테이블 생성 코드를 함수로 포함시키고 다음과 같이 사용할 수 있습니다.register_activation_hook()함수를 등록하려면, 함수 내에서 다음 코드를 사용하십시오.dbDelta()테이블 구조를 안전하게 만들거나 업데이트하려는 경우 특정 SQL 형식을 사용해야 하며, 함수를 통해 이를 수행해야 합니다. 반드시 사용해야 합니다.$wpdb->prefix다중 사이트 환경을 지원하기 위해 테이블 이름에 사이트 접두사를 추가하십시오.