WordPress 플러그인을 개발하려면 먼저 그 기본 구성을 이해해야 합니다. 플러그인은 본질적으로 하나 이상의 PHP 파일로 구성되며, 이 파일들은 WordPress의 특정 규격을 따릅니다. 플러그인은 ‘후크(Hooks)’ 시스템을 통해 WordPress 코어와 상호작용하여 웹사이트의 기능을 확장하거나 수정합니다. 플러그인을 개발하려면 최소한 하나의 메인 파일이 필요하며, 이 파일에는 표준적인 플러그인 헤더 주석이 포함되어야 합니다. 이 주석은 WordPress가 플러그인을 인식하는 데 중요한 역할을 합니다.
자신의 첫 번째 플러그인을 만들어 보세요.
가장 간단한 “Hello World” 플러그인을 만드는 것부터 시작해 보겠습니다. 이 과정을 통해 플러그인의 구조, 활성화 및 비활성화 방법에 익숙해질 수 있을 것입니다.
플러그인의 메인 파일을 생성합니다.
먼저, 당신의 WordPress 설치 디렉터리 내에서…wp-content/plugins폴더 안에서 새로운 폴더를 만드세요. 예를 들어, “new_folder”라는 이름으로 폴더를 만들 수 있습니다.my-first-plugin해당 폴더 내에 ‘’라는 이름의 파일을 생성하세요.my-first-plugin.php주 PHP 파일입니다. 이 파일명은 보통 폴더 이름과 동일합니다.
추천 읽기 WordPress 플러그인 개발 완벽 가이드: 제로에서 시작하여 첫 번째 플러그인을 만들어보세요。
열기my-first-plugin.php파일에 다음과 같은 표준 플러그인 헤더 정보를 입력하세요:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习的简单Hello World插件。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ 이 주석은 매우 중요합니다. WordPress는 스캔을 통해…wp-content/plugins그리고 그 하위 디렉터리에 있는 모든 PHP 파일들까지.Plugin Name:이 플러그인을 인식하여 백엔드의 플러그인 관리 페이지에 표시합니다.
기본 기능을 구현하고 활성화 훅을 설정합니다.
다음으로, 플러그인에 간단한 기능을 추가하겠습니다: 웹사이트의 푸터에 사용자 정의 텍스트를 한 줄로 표시하는 기능입니다. 또한, WordPress의 라이프사이클 후크(lifecycle hook)를 사용하여 플러그인이 활성화되거나 비활성화될 때 실행될 수 있는 작업들을 시연해 보겠습니다.
헤더 주석 아래에 다음 코드를 계속 추가하세요:
// 定义一个函数,在页脚输出信息
function my_first_plugin_display_footer_text() {
echo '<p style="text-align: center;">제 첫 번째 WordPress 플러그인을 사용해 주셔서 감사합니다!</p>';
}
// 使用 ‘wp_footer’ 动作钩子挂载我们的函数
add_action( 'wp_footer', 'my_first_plugin_display_footer_text' );
// 插件激活时执行的操作
function my_first_plugin_activate() {
// 可能在这里创建数据库表、设置默认选项等
update_option( 'my_first_plugin_installed', current_time( 'mysql' ) );
}
register_activation_hook( __FILE__, 'my_first_plugin_activate' );
// 插件停用时执行的操作
function my_first_plugin_deactivate() {
// 清理临时数据,但保留可能由用户创建的数据
delete_option( 'my_first_plugin_installed' );
}
register_deactivation_hook( __FILE__, 'my_first_plugin_deactivate' ); 이제 WordPress 관리자에 로그인하고 “플러그인” 페이지로 이동하세요. 거기에서 “My First Plugin”이라는 이름의 플러그인을 찾을 수 있을 것입니다. “활성화”를 클릭한 다음, 웹사이트의 전면 페이지로 이동하여 화면을 아래로 스크롤하면 추가된 사용자 정의 텍스트를 확인할 수 있습니다. 이 간단한 예제는 플러그인이 생성되어 실행되는 기본 과정을 보여줍니다.
추천 읽기 워드프레스 플러그인 개발을 위한 완전한 가이드: 첫 번째 플러그인을 만들기 위한 0부터 1까지의 과정。
WordPress 훅 시스템에 대한 심층적인 이해
후크(Hook)는 WordPress 플러그인 개발의 기초입니다. 후크를 사용하면 코어 코드가 실행되는 특정 지점에 자신의 코드를 삽입할 수 있으며, 이를 위해 코어 파일을 수정할 필요가 없습니다. 후크는 주로 두 가지 유형으로 나뉩니다: 액션(Action)과 필터(Filter)입니다.
액션 훅의 사용
액션 후크(Action Hook)는 특정 이벤트가 발생할 때 실행됩니다. 예를 들어, 글을 게시하거나 페이지의 상단/하단 부분을 로드할 때 사용됩니다. 이 후크는 어떠한 값을 반환할 필요가 없으며, 단순히 “코드를 실행하는” 역할만 수행합니다. 우리는 이미 첫 번째 플러그인에서 이 기능을 사용했습니다.wp_footer이 액션 후크입니다.
또 다른 흔한 예는init후크(hook)는 WordPress가 초기화될 때 실행되며, 사용자 정의 글 유형이나 분류 체계를 등록하는 데 자주 사용됩니다.
function my_plugin_custom_init() {
// 在这里注册自定义文章类型
}
add_action( 'init', 'my_plugin_custom_init' ); 액션 후크(Action Hook)가 정상적으로 작동하고 있습니다.add_action( $hook_name, $function_to_add, $priority, $accepted_args )Function mounting.
필터 후크의 사용 방법
필터 후크(filter hook)는 데이터를 수정하는 데 사용됩니다. 이 후크는 데이터가 사용되기 전에(예: 데이터베이스에 저장되거나 브라우저에 출력되기 전에) 호출되며, 여기서 데이터를 처리한 후 수정된 값을 반환합니다. 예를 들어,the_content필터를 사용하면 기사의 내용을 수정할 수 있습니다.
function my_plugin_add_disclaimer_to_content( $content ) {
if ( is_single() ) {
$disclaimer = '<p><em>이 문서는 제 플러그인에 의해 처리되었습니다.</em></p>';
$content .= $disclaimer;
}
return $content; // 必须返回修改后的内容
}
add_filter( 'the_content', 'my_plugin_add_disclaimer_to_content' ); 필터 후크가 정상적으로 작동하고 있습니다.add_filter( $hook_name, $function_to_add, $priority, $accepted_args )함수 마운팅. 우선순위$priority여러 함수가 동일한 후크(hook)에 등록될 때의 실행 순서를 결정합니다. 숫자가 작을수록 우선순위가 높습니다.
추천 읽기 WordPress 플러그인 개발 초보자를 위한 입문 가이드: 제0단계에서 첫 번째 기능 플러그인을 만들어보세요。
플러그인 아키텍처와 보안성에 대한 모범 사례
플러그인의 기능이 점점 더 복잡해짐에 따라, 우수한 아키텍처와 엄격한 보안 조치는 플러그인이 안정적이고 유지보수가 용이하며 안전하게 작동하도록 하는 데 필수적입니다.
Object-Oriented Programming (OOP)을 사용합니다.
对于功能丰富的插件,建议使用类(Class)来组织代码。这有助于封装功能,避免函数名冲突,并使代码结构更清晰。
<?php
/**
* Plugin Name: 高级示例插件
*/
if ( ! class_exists( 'Advanced_Sample_Plugin' ) ) {
class Advanced_Sample_Plugin {
public function __construct() {
// 在构造函数中挂载钩子
add_action( 'wp_footer', array( $this, 'display_message' ) );
add_filter( 'the_title', array( $this, 'modify_title' ) );
}
public function display_message() {
echo '<p>고급 플러그인 클래스에서 온 메시지입니다.</p>';
}
public function modify_title( $title ) {
return '前缀 - ' . $title;
}
}
// 初始化插件类
new Advanced_Sample_Plugin();
} 보안 조치를 시행합니다.
WordPress 플러그인의 보안은 매우 중요합니다. 가장 중요한 원칙은 절대로 사용자가 입력한 데이터를 신뢰해서는 안 된다는 것입니다. 모든 사용자 입력 데이터는 반드시 신중하게 검증하고 처리해야 합니다.$_GET,$_POST,$_COOKIE등장하는 초전역 변수(super-global variables)에서 얻은 데이터는 모두 검증, 정리, 그리고 이스케이플링(escaping) 처리가 필요합니다.
1. 검증: 데이터가 예상된 형식(예: 이메일 주소, 숫자 등)에 맞는지 확인합니다.sanitize_email(),is_email()등의 함수들입니다.
2. 정리: 데이터에서 불법적이거나 안전하지 않은 문자를 제거합니다. 텍스트 입력의 경우, 특정 규칙에 따라 문자를 필터링하거나 변환하는 과정을 거칩니다.sanitize_text_field()HTML이 허용되는 콘텐츠의 경우, 다음과 같이 사용하십시오:wp_kses_post()또는wp_kses()。
3. 이스케이프 처리: 데이터를 HTML, JavaScript 또는 URL로 출력할 때는 반드시 안전하게 인코딩해야 합니다. 이를 위해 적절한 이스케이프 기법을 사용해야 합니다.esc_html(),esc_js(),esc_url()등의 함수들입니다.
예를 들어, 단축 코드 속성을 처리하는 경우를 살펴보겠습니다:
function my_shortcode_handler( $atts ) {
// 使用 shortcode_atts 设置默认值并提取属性
$atts = shortcode_atts( array(
'url' => '#',
), $atts, 'my_shortcode' );
// 清理并转义 URL 属性
$clean_url = esc_url( $atts['url'] );
return "<a href='/ko/{$clean_url}/'>보안 링크</a>"추가 쇼트코드( 'my_shortcode', 'my_shortcode_handler' ); 플러그인에 관리 인터페이스와 국제화 기능을 추가하세요.
성숙한 플러그인은 일반적으로 다양한 설정 옵션을 제공해야 하며, 다국어 지원도 고려되어야 합니다.
관리 설정 페이지를 생성합니다.
WordPress의 Settings API를 사용하여 안전하고 표준화된 관리 페이지를 만들 수 있습니다. 이는 권장되는 방법으로, 보안성(nonce 검증)과 폼 UI의 일관성을 처리해 줍니다.
다음은 상위 메뉴와 설정 페이지를 추가한 간단한 예시입니다:
class My_Plugin_Admin {
public function __construct() {
add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );
add_action( 'admin_init', array( $this, 'settings_init' ) );
}
public function add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限
'my-plugin', // 菜单slug
array( $this, 'options_page_html' ) // 回调函数,输出页面内容
);
}
public function settings_init() {
register_setting( 'my_plugin_settings', 'my_plugin_options' ); // 注册设置
// 添加设置区域和字段
add_settings_section( 'my_plugin_section', '主要设置', null, 'my-plugin' );
add_settings_field( 'api_key', 'API密钥', array( $this, 'api_key_field_html' ), 'my-plugin', 'my_plugin_section' );
}
public function api_key_field_html() {
$options = get_option( 'my_plugin_options' );
?>
<input type='text' name='my_plugin_options[api_key]' value='<?php echo esc_attr( $options['api_key'] ?? '' ); ?>'>
<?php
}
public function options_page_html() {
// 检查用户权限
if ( ! current_user_can( 'manage_options' ) ) return;
?>
<div class="wrap">
<h1></h1>
<form action="/ko/options.php/" method="post" data-trp-original-action="options.php">
<?php
settings_fields( 'my_plugin_settings' );
do_settings_sections( 'my-plugin' );
submit_button();
?>
<input type="hidden" name="trp-form-language" value="ko"/></form>
</div>
<?php
}
}
new My_Plugin_Admin(); 플러그인의 국제화를 구현하는 방법입니다.
플러그인을 전 세계 사용자들이 사용할 수 있도록 하기 위해서는 다국어를 지원해야 합니다. 이는 다음과 같은 방법으로 구현할 수 있습니다:__( ‘Text’, ’text-domain’ )그리고_e( ‘Text’, ’text-domain’ )모든 사용자에게 표시되는 텍스트는 `translate` 함수로 감싸서 번역을 구현합니다. 이전에 플러그인의 헤더 부분에 주석으로 정의한 내용을 그대로 사용하시면 됩니다.Text Domain: my-first-plugin바로 이것을 위해 준비된 것입니다.
1. 코드 내에서 번역이 필요한 모든 문자열에 대해 번역 함수를 사용하십시오.
echo __( ‘欢迎使用我的插件!’, ‘my-first-plugin’ );
$title = esc_html__( ‘设置页面’, ‘my-first-plugin’ ); 2. Poedit와 같은 도구를 사용하여 플러그인 코드 내의 번역 문자열을 스캔하고, 이를 기반으로 번역 결과를 생성하세요..pot템플릿 파일. 번역자는 이 파일을 기반으로 각 언어에 맞는 콘텐츠를 생성합니다..po그리고 컴파일된 후.mo파일(예:zh_CN.po/mo)。
3. 이러한 언어 파일들을 플러그인의 해당 위치에 배치하세요.languages폴더 안에 있습니다. WordPress는 사이트의 언어 설정에 따라 자동으로 해당 번역 내용을 로드합니다.
요약
WordPress 플러그인 개발은 간단한 스크립트에서부터 복잡한 애플리케이션에 이르기까지의 과정입니다. 핵심은 훅 시스템을 이해하고 숙련되게 사용하여 자신의 기능을 WordPress의 라이프사이클에 원활하게 통합하는 것입니다. 객체 지향적인 아키텍처 원칙을 따르면 코드의 구조와 유지보수성을 향상시킬 수 있습니다. 보안은 개발의 기초이므로, 모든 사용자 입력을 반드시 검증하고 정제하며 출력 결과를 적절히 처리해야 합니다. 마지막으로, Settings API를 사용하여 전문적인 백엔드 인터페이스를 만들고 국제화 기능을 활용하여 자신의 플러그인을 전 세계에 배포할 수 있습니다. 간단한 플러그인부터 시작하여 점차 복잡한 기능을 추가해 나가는 것이 좋습니다.my-first-plugin.php이러한 개념들을 점차적으로 실천해 나가면, 강력하고 안전하며 많은 사람들에게 사랑받는 WordPress 플러그인을 개발할 수 있을 것입니다.
자주 묻는 질문
WordPress 플러그인을 개발하려면 어떤 기초 지식이 필요한가요?
PHP 프로그래밍 언어를 반드시 숙달해야 합니다. 왜냐하면 해당 플러그인들은 주로 PHP로 작성되었기 때문입니다. 또한, HTML, CSS, JavaScript에 대한 기본적인 지식도 필요합니다. 이러한 기술들은 프론트엔드 인터페이스와 상호작용을 구축하는 데 사용됩니다. 가장 중요한 것은 WordPress의 기본적인 작동 원리를 이해하는 것입니다. 여기에는 테마(themes), 훅(hooks), 반복문(cycles), 데이터 저장 방식(data storage methods) 등이 포함됩니다.
현지에서 플러그인을 테스트할 수 있을까요? 온라인 웹사이트에는 영향을 미치지 않을까요?
물론 가능하며, 이는 강력히 추천됩니다. 플러그인 개발은 로컬 개발 환경(예: XAMPP, MAMP, Local by Flywheel과 같은 도구를 사용하여 설정한 환경) 또는 별도의 테스트 서버에서 진행하는 것이 좋습니다. 이렇게 하면 코드 오류로 인해 온라인 웹사이트가 다운되거나 데이터가 손실되는 것을 방지할 수 있습니다.
내 플러그인 코드를 어떻게 디버깅하나요?
WordPress는 다양한 디버깅 도구를 제공합니다. 먼저,wp-config.php파일에서 디버깅 모드를 활성화하는 방법: 정의WP_DEBUG상수는 변경될 수 없는 값입니다.true이렇게 하면 PHP 오류, 경고, 알림이 페이지에 직접 표시됩니다. 보다 복잡한 디버깅을 위해서는 다른 도구를 사용할 수 있습니다.error_log()이 함수는 정보를 서버의 오류 로그에 기록하거나, Query Monitor와 같은 전용 디버깅 플러그인을 사용하여 데이터베이스 쿼리, 후크(hook), PHP 오류 등에 대한 상세한 정보를 제공합니다.
개발이 완료된 후 플러그인을 WordPress 공식 디렉토리에 제출하는 방법은 무엇입니까?
WordPress.org에 접속하여 계정을 생성해 주세요. 그런 다음 Subversion(SVN) 도구를 사용하여 자신이 개발한 플러그인 코드를 WordPress가 제공하는 SVN 저장소에 업로드해 주세요. 코드를 업로드하기 전에, 해당 플러그인이 공식적인 플러그인 개발 표준 및 가이드라인을 준수하는지 확인해 주세요. 여기에는 보안성, 코드 품질, 문서 작성, 국제화 등의 요구 사항이 포함됩니다. 심사를 통과하면 해당 플러그인이 공식 디렉터리에 등록되어 사용자들이 다운로드하여 설치할 수 있게 됩니다.
다음 단계는 무엇인가요?
확장된 독서 및 실무 지식
다음은 이 도움말의 주제와 관련이 있으며 더 깊이 있게 읽기에 적합합니다. 현재 문제와 가장 가까운 문서부터 시작하여 점차 주변 주제로 확장하는 것이 우선순위를 정하는 것이 좋습니다.