WordPress 플러그인 개발 환경 및 기본 준비 사항
코드를 작성하기 전에 안정적이고 격리된 개발 환경을 갖추는 것은 성공의 첫걸음입니다. 이는 테스트 코드의 영향으로부터 운영 웹사이트를 보호할 뿐만 아니라, 디버깅 과정도 더욱 원활하게 만들어 줍니다.
로컬 개발 환경 구축
Local by Flywheel, XAMPP 또는 MAMP와 같은 로컬 서버 소프트웨어 패키지를 사용하는 것이 좋습니다. 이러한 도구는 PHP, MySQL, Apache/Nginx가 포함된 완전한 환경을 한 번의 클릭으로 설치할 수 있게 해줍니다. 사용 중인 PHP 버전이 목표 WordPress 버전의 요구 사항과 일치하는지 확인하세요. 일반적으로 더 나은 성능과 보안 지원을 위해 PHP 7.4 이상을 사용하는 것이 권장됩니다.
플러그인의 메인 파일을 생성합니다.
모든 WordPress 플러그인에는 플러그인의 진입점이 되는 메인 파일이 반드시 있어야 합니다. 이 파일은 배치해야 합니다 wp-content/plugins 디렉터리 아래의 별도 폴더에 두고, 고유한 이름을 지정합니다. 예를 들어, “인사말” 플러그인을 만들려는 경우, 다음과 같은 이름의 폴더를 만들 수 있습니다 my-first-plugin 폴더를 만들고 그 안에 기본 파일을 생성합니다 my-first-plugin.php。
추천 읽기 WordPress 플러그인 개발의 궁극적인 가이드: 제로에서 시작하여 상업용 수준의 플러그인을 구축하는 방법。
이 파일의 시작 부분에는 WordPress에 플러그인의 기본 정보를 제공하기 위한 특정 플러그인 헤더 주석이 반드시 포함되어야 합니다. 다음은 가장 기본적인 예시입니다:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习插件开发的简单插件。
* Version: 1.0.0
* Author: 你的名字
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ 플러그인의 핵심 구조와 후크 메커니즘
워드프레스 플러그인 개발의 핵심은 그 “훅”(Hooks) 시스템을 이해하고 활용하는 것입니다. 훅은 코어 파일을 수정할 필요 없이, 특정 시점에 당신의 코드가 워드프레스의 핵심 흐름에 “걸려들어” 기능을 변경하거나 추가할 수 있게 해줍니다.
액션 훅과 필터 훅 이해하기
후크는 주로 두 가지 유형으로 나뉩니다: 액션(Actions)과 필터(Filters)입니다. 액션 후크는 글 게시나 관리자 화면 로드와 같이 특정 이벤트가 발생할 때 코드를 실행합니다. 사용합니다 add_action() 함수로 마운트합니다. 반면 필터 훅은 데이터를 수정하는 데 사용되며, 데이터가 데이터베이스나 브라우저로 전송되기 전에 그 값을 수정할 수 있게 해줍니다. 당신은 사용합니다 add_filter() 함수를 사용하여 마운트합니다.
예를 들어, 웹사이트 바닥글에 사용자 지정 텍스트를 추가하려면 다음을 사용할 수 있습니다 wp_footer 이 동작 훅:
함수 myplugin_add_footer_text() {
echo '<p style="text-align:center;">감사합니다!</p>';
}
add_action( 'wp_footer', 'myplugin_add_footer_text' ); 플러그인 관리 페이지를 만들기
많은 플러그인은 WordPress 관리자 백엔드에 설정 페이지를 제공해야 합니다. 이는 일반적으로 다음에 연결하여 수행됩니다. admin_menu 액션 훅을 사용하여 구현합니다. 이 함수 안에서 사용할 함수를 정의해야 합니다. add_menu_page() 또는 add_options_page() 등의 함수를 사용해 페이지를 등록하고, 페이지의 HTML 내용을 출력하는 또 다른 함수를 정의합니다.
추천 읽기 제로에서 시작하기: WordPress 플러그인 개발을 위한 완벽한 가이드 및 실전 튜토리얼。
function myplugin_add_admin_menu() {
add_options_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限
'myplugin-settings', // 菜单别名
'myplugin_render_settings_page' // 用于显示页面内容的函数
);
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
function myplugin_render_settings_page() {
?>
<div class="wrap">
<h2>My plugin settings</h2>
<form method="post" action="/ko/options.php/" data-trp-original-action="options.php">
<?php
settings_fields( 'myplugin_settings_group' );
do_settings_sections( 'myplugin-settings' );
submit_button();
?>
<input type="hidden" name="trp-form-language" value="ko"/></form>
</div>
<?php
} 플러그인 기능 및 데이터 처리 구현
완전한 플러그인은 일반적으로 사용자 입력을 처리하고, 설정을 저장하며, 데이터베이스와 상호작용해야 합니다. WordPress는 이러한 작업을 단순화할 수 있도록 강력한 API를 제공합니다.
설정 API를 사용하여 옵션 저장
수동으로 폼 제출과 데이터베이스 작업을 처리하는 것은 번거롭고 안전하지도 않습니다. WordPress 설정 API는 설정을 등록, 검증 및 저장하는 표준화되고 안전한 방법을 제공합니다. 여기에는 세 가지 핵심 함수가 포함됩니다:register_setting()、add_settings_section() 그리고 add_settings_field()。
다음 예시는 텍스트 필드 설정을 등록하는 방법을 보여줍니다:
function myplugin_settings_init() {
register_setting( 'myplugin_settings_group', 'myplugin_greeting_text' );
add_settings_section(
'myplugin_section',
'基础设置',
null,
'myplugin-settings'
);
add_settings_field(
'myplugin_field_greeting',
'问候语',
'myplugin_field_greeting_render',
'myplugin-settings',
'myplugin_section'
);
}
add_action( ‘admin_init’, ‘myplugin_settings_init’ );
function myplugin_field_greeting_render() {
$value = get_option( ‘myplugin_greeting_text’, ‘你好,世界!’ );
echo ‘<input type=“text” name=“myplugin_greeting_text” value=“’ . esc_attr( $value ) . ‘” />’;
} 커스텀 데이터베이스 테이블을 생성합니다.
복잡한 관계형 데이터를 저장해야 하는 플러그인의 경우 사용자 정의 데이터베이스 테이블을 만들어야 할 수 있습니다. 이는 일반적으로 플러그인이 활성화될 때 수행됩니다. 함수를 작성한 다음 이를 WordPress의 활성화 등록 훅에 연결해야 합니다. dbDelta() 테이블을 생성하거나 업데이트하는 SQL 문을 실행하는 함수로, 테이블 구조의 변경을 지능적으로 처리할 수 있습니다.
먼저, 기본 플러그인 파일에서 활성화 훅을 등록하세요:
register_activation_hook( __FILE__, ‘myplugin_create_database_table’ ); 그런 다음 테이블을 생성하는 함수를 정의합니다:
추천 읽기 WordPress 플러그인 개발 입문 가이드: 제로에서 시작하여 첫 번째 플러그인을 만들어보세요。
function myplugin_create_database_table() {
global $wpdb;
$table_name = $wpdb->prefix . ‘myplugin_data’;
$charset_collate = $wpdb->get_charset_collate();
$sql = “CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(100) NOT NULL,
email varchar(100) NOT NULL,
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
) $charset_collate;”;
require_once( ABSPATH . ‘wp-admin/includes/upgrade.php’ );
dbDelta( $sql );
} 플러그인 보안, 국제화 및 출시 준비
개발이 완료된 플러그인은 보안 강화, 언어 현지화 및 규격화된 패키징을 거쳐야만 안전하게 사용자에게 전달하거나 공식 디렉터리에 제출할 수 있습니다.
보안 모범 사례 구현
보안은 플러그인 개발에서 가장 중요한 사항입니다. 항상 사용자 입력을 검증(형식을 확인)하고 정리(유해한 부분을 제거)하세요. WordPress에서 제공하는 함수(예: esc_html()、esc_attr()、sanitize_text_field() 데이터를 출력하거나 처리합니다. 데이터베이스 쿼리를 실행할 때는 $wpdb->prepare() SQL 주입 공격을 방지하는 방법. 동시에, 사용 current_user_can() 사용자 권한을 확인하여 민감한 작업을 수행할 수 있는 사람이 권한이 부여된 사용자들만인지를 확인해야 합니다.
플러그인의 국제화를 구현하는 방법입니다.
귀하의 플러그인을 전 세계 사용자가 사용할 수 있도록 하려면 반드시 국제화(i18n) 준비를 해야 합니다. 이는 모든 사용자 대상 문자열을 코드에 직접 작성해서는 안 되며, WordPress의 번역 함수로 감싸야 한다는 뜻입니다. 가장 자주 사용되는 함수는 () 번역 결과를 표시하는 데 사용됩니다.() 번역된 문자열을 가져오고 _e() 직접 번역 결과를 출력하기 위해 사용됩니다.
코드에서는 이렇게 작성해야 합니다:
$greeting = __( ‘你好,世界!’, ‘my-first-plugin’ );
echo esc_html( $greeting );
_e( ‘设置已保存。’, ‘my-first-plugin’ ); 주의하세요. 번역 함수의 두 번째 매개변수인 “텍스트 도메인”(Text Domain)은 플러그인 헤더 주석에 정의된 것과 반드시 일치해야 합니다. Text Domain 완전히 일치합니다. 그런 다음 Poedit와 같은 도구를 사용하여 생성할 수 있습니다. .pot 템플릿 파일은 번역가가 작업을 수행하는 데 사용하는 파일입니다. .po 그리고 .mo 변환할 파일을 업로드해 주세요. 파일이 업로드되면 자동으로 번역이 시작됩니다.
요약
워드프레스 플러그인 개발은 아이디어를 기능으로 전환하는 과정이며, 워드프레스 핵심 아키텍처, 특히 훅 시스템에 대한 깊은 이해를 바탕으로 합니다. 환경 구축, 메인 파일 작성, 액션 및 필터 훅 활용부터 설정 API와 데이터베이스 API를 사용한 데이터 처리에 이르기까지, 모든 단계는 명확한 패턴을 따릅니다. 마지막으로, 엄격한 보안 실천과 완전한 국제화 지원을 통해서만 귀하의 플러그인은 개인 프로젝트에서 배포 가능한 제품으로 전환될 수 있습니다. 이러한 기초를 익힌 후에는 사용자 정의 게시물 유형, REST API 통합, Gutenberg 블록 개발과 같은 더 복잡한 영역을 탐색하여 더욱 강력하고 현대적인 워드프레스 확장을 구축할 수 있습니다.
자주 묻는 질문
WordPress 플러그인을 개발하려면 PHP에 능통해야 하나요?
네, PHP는 워드프레스와 그 플러그인 개발의 주요 프로그래밍 언어입니다. PHP의 기본 문법, 함수, 배열, 객체 지향 프로그래밍 등의 개념을 익혀야 합니다. 동시에 HTML, CSS, JavaScript에 대한 기본적인 이해도 매우 중요합니다. 프런트엔드 표시와 상호작용을 다뤄야 하기 때문입니다.
개발 중인 WordPress 플러그인을 어떻게 디버그할 수 있습니까?
WordPress의 디버그 모드를 활성화하는 것을 권장합니다. 에서 wp-config.php 파일 내에서, 해당 내용을 처리할 것입니다. WP_DEBUG 상수를 다음과 같이 설정합니다: true이렇게 하면 모든 PHP 오류, 경고 및 알림이 화면에 표시됩니다. 동시에, 사용할 수 있습니다 error_log() 함수는 디버그 정보를 서버의 오류 로그에 기록하거나 브라우저 개발자 도구를 사용하여 프런트엔드 JavaScript를 디버깅합니다.
플러그인 내의 함수명은 다른 플러그인과의 충돌을 어떻게 피할 수 있나요?
함수명, 클래스명 또는 상수명 충돌을 방지하려면 항상 고유한 접두사를 사용해야 합니다. 가장 좋은 방법은 플러그인 이름이나 약어를 접두사로 사용하는 것입니다. 예를 들어, 플러그인 이름이 “Awesome Slider”라면 다음과 비슷한 것을 사용할 수 있습니다 as_ 또는 awesome_slider_ 모든 사용자 정의 함수의 접두사로 사용합니다. 클래스 이름에도 동일한 원칙을 따라야 합니다.
유료 플러그인을 WordPress 공식 플러그인 디렉터리에 제출할 수 있나요?
안 됩니다. WordPress 공식 플러그인 디렉터리는 GPL 라이선스를 준수하고 완전히 무료인 플러그인만 받습니다. 유료(프리미엄) 플러그인을 개발한 경우에는 자체 웹사이트에서 배포하고 판매해야 합니다. 다만 많은 유료 플러그인은 기본 기능이 포함된 무료 버전을 공식 디렉터리에 등록하여, 프리미엄 버전의 홍보 및 체험 경로로 활용합니다.
다음 단계는 무엇인가요?
확장된 독서 및 실무 지식
다음은 이 도움말의 주제와 관련이 있으며 더 깊이 있게 읽기에 적합합니다. 현재 문제와 가장 가까운 문서부터 시작하여 점차 주변 주제로 확장하는 것이 우선순위를 정하는 것이 좋습니다.