คู่มือเริ่มต้นการพัฒนาปลั๊กอิน WordPress: สร้างปลั๊กอินที่ปรับแต่งเองชิ้นแรกตั้งแต่เริ่มต้น

อ่าน 3 นาที
2026-03-19
2026-06-04
2,860
I earn commissions when you shop through the links below, at no additional cost to you.

การเตรียมสภาพแวดล้อมการพัฒนา WordPress Plugin

ก่อนเริ่มเขียนโค้ด คุณต้องมีสภาพแวดล้อมการพัฒนาที่เหมาะสม สิ่งนี้ไม่เพียงแต่ช่วยเพิ่มประสิทธิภาพการพัฒนา แต่ยังช่วยให้คุณดีบักและทดสอบปลั๊กอินได้ดียิ่งขึ้น ก่อนอื่น คุณต้องติดตั้งสภาพแวดล้อมการทำงานของ WordPress บนคอมพิวเตอร์ท้องถิ่นของคุณ คุณสามารถเลือกใช้สภาพแวดล้อมการพัฒนาแบบรวม เช่น XAMPP, MAMP หรือ Local by Flywheel ซึ่งสามารถติดตั้ง PHP, MySQL และเซิร์ฟเวอร์ Apache/Nginx ได้อย่างรวดเร็ว สำหรับไฟล์หลักของ WordPress แนะนำให้ดาวน์โหลดและติดตั้งเวอร์ชันล่าสุดที่เสถียรจากเว็บไซต์ทางการ

ตรวจสอบให้แน่ใจว่าเวอร์ชัน PHP ของคุณตรงตามข้อกำหนดขั้นต่ำของ WordPress และเปิดใช้งานฟังก์ชันการรายงานข้อผิดพลาด ซึ่งมีความสำคัญอย่างยิ่งสำหรับการดีบัก คุณสามารถเพิ่มโค้ดต่อไปนี้ในไฟล์wp-config.phpเพื่อเปิดใช้งานโหมดดีบัก:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true); // 将错误记录到 /wp-content/debug.log
define('WP_DEBUG_DISPLAY', false); // 不在页面上显示错误

นอกจากนี้ ตัวแก้ไขโค้ดที่มีประสิทธิภาพเป็นสิ่งจำเป็น เช่น Visual Studio Code, PhpStorm หรือ Sublime Text ตัวแก้ไขเหล่านี้มักจะให้การเน้นไวยากรณ์ คำแนะนำโค้ด และการรวมระบบควบคุมเวอร์ชัน ซึ่งสามารถปรับปรุงประสบการณ์การเขียนโค้ดได้อย่างมาก สุดท้าย แนะนำให้ติดตั้งเครื่องมือสำหรับนักพัฒนาบนเบราว์เซอร์ และพิจารณาใช้ส่วนขยายเบราว์เซอร์ที่ออกแบบมาโดยเฉพาะสำหรับการพัฒนา WordPress เพื่อให้ง่ายต่อการตรวจสอบฮุค คิวรีฐานข้อมูล และตรวจสอบประสิทธิภาพ

แนะนำให้อ่าน คู่มือเริ่มต้นการพัฒนา WordPress Plugin: สร้างโมดูลฟังก์ชันแรกของคุณจากศูนย์ถึงหนึ่ง

สร้างไฟล์ปลั๊กอินแรกของคุณ

รูปแบบพื้นฐานที่สุดของ WordPress Plugin คือไฟล์ PHP ไฟล์เดียว ปลั๊กอินทั้งหมดจะถูกเก็บไว้ใน/wp-content/plugins/ไดเรกทอรี แต่ละปลั๊กอินสามารถเป็นไฟล์ PHP เดี่ยว หรือโฟลเดอร์ที่ประกอบด้วยหลายไฟล์ก็ได้

UltaHost WordPress โฮสติ้ง
การรับประกันคืนเงินภายใน 30 วัน, แบนด์วิธและฐานข้อมูลไม่จำกัด, การป้องกัน DDoS ฟรี, ซื้อ 3 ปีลดราคา 50%

ขั้นแรก ให้สร้างโฟลเดอร์ที่มีชื่อเฉพาะสำหรับปลั๊กอินของคุณ เช่นmy-first-plugin。ในโฟลเดอร์นี้ ให้สร้างไฟล์ปลั๊กอินหลัก โดยทั่วไปจะตั้งชื่อให้เหมือนกับชื่อโฟลเดอร์ นั่นคือmy-first-plugin.phpไฟล์นี้ต้องเริ่มต้นด้วยส่วนหัวความคิดเห็นที่ตรงตามมาตรฐานของ WordPress ซึ่งให้ข้อมูลพื้นฐานเกี่ยวกับปลั๊กอินแก่ระบบ 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
 * Domain Path:       /languages
 */

ในความคิดเห็นนี้ “Plugin Name” เป็นข้อมูลที่ต้องระบุ ซึ่งกำหนดชื่อที่แสดงของปลั๊กอินในหน้าการจัดการหลังบ้าน ข้อมูลอื่นๆ เช่น หมายเลขเวอร์ชัน ผู้เขียน เป็นต้น ช่วยให้ผู้ใช้เข้าใจปลั๊กอินได้ดีขึ้น หลังจากสร้างไฟล์นี้แล้ว ให้วางไว้ใน/wp-content/plugins/my-first-plugin/สารบัญ ณ จุดนี้ ให้เข้าสู่ระบบในส่วนหลังบ้านของ WordPress ของคุณ ไปที่หน้า “ปลั๊กอิน” คุณควรจะเห็นปลั๊กอินใหม่ชื่อ “ปลั๊กอินที่กำหนดเองแรกของฉัน” และสามารถเปิดใช้งานได้ แม้ว่าตอนนี้มันยังไม่ทำอะไรเลย แต่คุณก็ได้สร้างโครงสร้างพื้นฐานของปลั๊กอินสำเร็จแล้ว

การจัดการการเปิดใช้งานและปิดใช้งานปลั๊กอิน

เมื่อปลั๊กอินถูกเปิดใช้งานหรือปิดใช้งาน มักจำเป็นต้องดำเนินงานเริ่มต้นและทำความสะอาด เช่น การสร้างตารางฐานข้อมูล การตั้งค่าตัวเลือกเริ่มต้น หรือการลบข้อมูลชั่วคราว WordPress จัดการพฤติกรรมเหล่านี้ผ่านสองฮุค (Hook) พิเศษ:register_activation_hookregister_deactivation_hook

แนะนำให้อ่าน เริ่มต้นจากศูนย์สู่เชี่ยวชาญ: คู่มือฉบับสมบูรณ์และแนวทางปฏิบัติที่ดีที่สุดในการพัฒนาปลั๊กอิน WordPress

คุณสามารถกำหนดฮุคเหล่านี้ในไฟล์ปลั๊กอินหลักได้ ตัวอย่างเช่น เมื่อปลั๊กอินถูกเปิดใช้งาน เราอาจต้องการเขียนตัวเลือกการตั้งค่าเริ่มต้นลงในฐานข้อมูล เมื่อปลั๊กอินถูกปิดใช้งาน อาจจำเป็นต้องล้างตัวเลือกนี้ รหัสการใช้งานแสดงดังต่อไปนี้:

// 定义插件激活时执行的函数
function my_plugin_activate() {
    // 添加一个默认选项到数据库
    add_option('my_plugin_default_option', '这是默认值');
    // 或者可以在这里初始化自定义数据库表(需要更复杂的SQL)
}
register_activation_hook(__FILE__, 'my_plugin_activate');

// 定义插件停用时执行的函数
function my_plugin_deactivate() {
    // 删除之前创建的选项
    delete_option('my_plugin_default_option');
    // 注意:通常不在停用钩子中删除数据,以免用户重新激活时丢失设置
    // 更常见的清理工作在卸载钩子中处理
}
register_deactivation_hook(__FILE__, 'my_plugin_deactivate');

สิ่งสำคัญที่ควรทราบคือregister_deactivation_hookมักใช้สำหรับการล้างข้อมูลเบื้องต้น ในขณะที่การลบข้อมูลถาวร (เช่น การลบตารางฐานข้อมูล) ควรจัดการในฮุคการถอนการติดตั้ง ฟังก์ชันการถอนการติดตั้งต้องลงทะเบียนผ่านregister_uninstall_hookการใช้ฮุคเหล่านี้อย่างเหมาะสมจะทำให้แน่ใจว่าปลั๊กอินของคุณทำงานอย่างถูกต้อง และไม่ทิ้งข้อมูลที่ซ้ำซ้อนไว้บนเว็บไซต์

ทำความเข้าใจและใช้ฮุคและตัวกรอง

หัวใจหลักของการพัฒนา WordPress ปลั๊กอินอยู่ที่กลไก “ฮุค” (Hooks) ซึ่งอนุญาตให้คุณแทรกโค้ดที่กำหนดเองในจุดหรือเวลาที่เฉพาะเจาะจงเพื่อปรับเปลี่ยนหรือขยายฟังก์ชันหลักของ WordPress ฮุคหลักๆ แบ่งออกเป็นสองประเภท: แอ็กชัน (Actions) และตัวกรอง (Filters)

hosting.com 共享主机
高性能,配备 AMD EPYC CPU、NVMe SSD 存储和 LiteSpeed,全天候24小时、全天候的专家内部支持,高级安全措施,包括 SSL、暴力破解、恶意软件和 DDoS 防护,节省高达 73%

แอ็กชันฮุคอนุญาตให้คุณดำเนินการฟังก์ชันที่กำหนดเองเมื่อเหตุการณ์เฉพาะเกิดขึ้น ตัวอย่างเช่น เมื่อโพสต์ถูกเผยแพร่แล้ว (publish_post), ในขณะที่โหลดส่วนหัวของหน้าเว็บ (wp_head) หรือในระหว่างการเริ่มต้นระบบจัดการหลังบ้าน (admin_init). คุณสามารถใช้ฟังก์ชันadd_action()เพื่อติดตั้งโค้ดของคุณ ต่อไปนี้เป็นตัวอย่างง่ายๆ ที่เพิ่มข้อความที่กำหนดเองโดยอัตโนมัติที่ท้ายบทความแต่ละบทความ:

function add_custom_footer_to_content($content) {
    if (is_single()) { // 仅在单篇文章页面添加
        $custom_text = '<p><em>ขอบคุณที่อ่านบทความนี้ค่ะ!</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
// 使用‘the_content’过滤器,注意这是一个过滤器(Filter)的例子
add_filter('the_content', 'add_custom_footer_to_content');

ดังที่เห็นในโค้ดด้านบน เราใช้ตัวกรอง (Filter) จริงๆ ตัวกรองใช้สำหรับปรับเปลี่ยนข้อมูลที่ส่งผ่านเข้ามา ความแตกต่างหลักจากแอ็กชันคือ ตัวกรองต้องส่งคืนค่าที่ถูกแก้ไขแล้ว ตัวกรองทั่วไปประกอบด้วยthe_content(แก้ไขเนื้อหาบทความ)the_title(แก้ไขหัวข้อ) และexcerpt_length(แก้ไขความยาวบทสรุป) โดยมีadd_filter()ฟังก์ชันที่ใช้สำหรับติดตั้งฟังก์ชันตัวกรองที่สอดคล้องกัน

สร้าง Hook ที่กำหนดเองสำหรับผู้อื่นเพื่อขยายความสามารถ

ปลั๊กอินที่ออกแบบมาอย่างดีไม่เพียงแต่ใช้ฮุคหลักของ WordPress เท่านั้น แต่ยังให้ฮุคที่กำหนดเองของตัวเองด้วย เพื่อให้นักพัฒนาคนอื่นสามารถขยายปลั๊กอินของคุณได้ ใช้do_action()ฟังก์ชันเพื่อสร้างฮุคแอ็กชัน ใช้apply_filters()สามารถสร้างฮุคตัวกรองได้

แนะนำให้อ่าน คู่มือการพัฒนา WordPress Plugin แบบครบวงจร: สร้างปลั๊กอินเฉพาะของคุณตั้งแต่เริ่มต้นจนสำเร็จ

ตัวอย่างเช่น ก่อนที่ปลั๊กอินของคุณจะประมวลผลข้อมูลบางอย่าง ให้เตรียมตัวกรองเพื่ออนุญาตให้ผู้อื่นแก้ไขพารามิเตอร์อินพุต:

// 定义插件的主要处理函数
function my_plugin_process_data($input_data) {
    // 在核心处理前,允许其他开发者通过过滤器修改 $input_data
    $filtered_data = apply_filters('my_plugin_filter_input', $input_data);

// ... 使用 $filtered_data 进行核心处理 ...

// 在处理完成后,触发一个动作钩子,通知其他开发者
    do_action('my_plugin_after_processing', $filtered_data);

return $result;
}

ด้วยการสร้างฮุคที่กำหนดเอง ปลั๊กอินของคุณจะมีความสามารถในการขยายที่ดี เป็นไปตามปรัชญาการพัฒนา WordPress เอง

โฮสติ้งแบบแชร์ของ InterServer
共享主机每月 $2.50 USD , 首月 $0.1 USD 优惠码 tryinterserver, 461个云应用脚本,一键安装。

เพิ่มหน้าแอดมินและตัวเลือกการตั้งค่าให้กับปลั๊กอิน

ปลั๊กอินส่วนใหญ่ที่มีประโยชน์จำเป็นต้องมีอินเทอร์เฟซการจัดการหลังบ้าน เพื่อให้ผู้ดูแลเว็บไซต์สามารถกำหนดค่าตัวเลือกของปลั๊กอินได้ WordPress มี API ที่หลากหลายสำหรับการสร้างเมนูการจัดการและหน้าตั้งค่า

ขั้นแรก, คุณจำเป็นต้องใช้add_action('admin_menu', 'your_function')ใช้ฮุคเพื่อลงทะเบียนรายการเมนู ในฟังก์ชันที่เกี่ยวข้อง ใช้add_menu_page()add_submenu_page()ฟังก์ชันเพื่อเพิ่มเมนูระดับบนสุดหรือเมนูย่อย ต่อไปนี้เป็นตัวอย่างพื้นฐานสำหรับการเพิ่มเมนูระดับบนสุดและหน้าตั้งค่า:

// 钩入 admin_menu 来添加管理菜单
function my_plugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',           // 页面标题
        '我的插件',               // 菜单标题
        'manage_options',         // 权限(管理员)
        'my-plugin-settings',     // 菜单slug
        'my_plugin_settings_page', // 用于显示页面内容的回调函数
        'dashicons-admin-generic', // 图标(Dashicon)
        80                         // 菜单位置
    );
}
add_action('admin_menu', 'my_plugin_add_admin_menu');

// 定义设置页面的显示内容
function my_plugin_settings_page() {
    // 检查用户权限
    if (!current_user_can('manage_options')) {
        return;
    }
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <form action="/th/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出设置字段和非ce字段
            settings_fields('my_plugin_options_group');
            do_settings_sections('my-plugin-settings');
            submit_button('保存设置');
            ?>
        <input type="hidden" name="trp-form-language" value="th"/></form>
    </div>
    &lt;?php
}

ลงทะเบียนและตรวจสอบฟิลด์การตั้งค่า

เพียงแค่มีหน้าเว็บยังไม่พอ คุณต้องใช้ WordPress Settings API เพื่อลงทะเบียน จัดเก็บ และตรวจสอบการตั้งค่าอย่างปลอดภัย กระบวนการนี้รวมถึงการใช้register_setting()add_settings_section()add_settings_field()ฟังก์ชันต่างๆ

โค้ดต่อไปนี้แสดงวิธีการลงทะเบียนกลุ่มการตั้งค่าและฟิลด์ข้อความ:

// 初始化插件设置
function my_plugin_settings_init() {
    // 注册一个设置选项组及其数据
    register_setting(
        'my_plugin_options_group', // 选项组名,需与settings_fields()参数一致
        'my_plugin_settings',      // 存储在wp_options表中的选项名
        'my_plugin_sanitize_input' // 可选的验证回调函数
    );

// 添加一个设置区域
    add_settings_section(
        'my_plugin_section_main',
        '主要设置',
        null, // 区域描述的回调函数,可为空
        'my-plugin-settings' // 所属页面的slug
    );

// 向该区域添加一个具体的字段
    add_settings_field(
        'my_plugin_field_text',
        '示例文本字段',
        'my_plugin_field_text_render', // 渲染字段HTML的回调函数
        'my-plugin-settings',
        'my_plugin_section_main'
    );
}
add_action('admin_init', 'my_plugin_settings_init');

// 渲染文本输入字段的函数
function my_plugin_field_text_render() {
    $options = get_option('my_plugin_settings');
    $value = $options['text_field'] ?? ''; // PHP 7.0+ 空合并运算符
    ?>
    <input type='text' name='my_plugin_settings[text_field]' value='<?php echo esc_attr($value); ?>'>
    <?php
}

// 清理和验证输入的函数
function my_plugin_sanitize_input($input) {
    $sanitized_input = [];
    if (isset($input['text_field'])) {
        // 清理文本输入,移除非法标签
        $sanitized_input['text_field'] = sanitize_text_field($input['text_field']);
    }
    return $sanitized_input;
}

ด้วย Settings API WordPress จะจัดการการบันทึกการตั้งค่า การตรวจสอบความปลอดภัย และการตรวจสอบสิทธิ์โดยอัตโนมัติ ซึ่งช่วยลดความซับซ้อนของกระบวนการพัฒนาและเพิ่มความปลอดภัยอย่างมาก

สรุป

ผ่านคู่มือนี้ เราได้เดินผ่านขั้นตอนหลักของการพัฒนา WordPress Plugin อย่างเป็นระบบ: ตั้งแต่การตั้งค่าแวดล้อม การสร้างไฟล์ Plugin พื้นฐาน ไปจนถึงการทำความเข้าใจและใช้กลไก Hook หลัก และสุดท้ายคือการเพิ่มอินเทอร์เฟซการจัดการและตัวเลือกการตั้งค่าแบบมืออาชีพให้กับ Plugin แต่ละส่วนได้แสดงตัวอย่างโค้ดสำคัญและแนวทางปฏิบัติมาตรฐาน หัวใจของการพัฒนา Plugin อยู่ที่การใช้ระบบ Hook ขนาดใหญ่ของ WordPress เพื่อขยายฟังก์ชันการทำงาน พร้อมทั้งปฏิบัติตามข้อกำหนด API เพื่อรับประกันความปลอดภัยและความเข้ากันได้ จำไว้ว่า การเริ่มต้นจากความคิดง่ายๆ ค่อยๆ เพิ่มฟังก์ชันการทำงาน และทดสอบอย่างเพียงพอในระหว่างกระบวนการพัฒนา คือเส้นทางที่มีประสิทธิภาพในการสร้าง Plugin ที่ยอดเยี่ยม ต่อไปคุณสามารถสำรวจหัวข้อขั้นสูงเพิ่มเติมได้ เช่น การสร้างประเภทบทความที่กำหนดเอง การเพิ่ม Shortcode การจัดการคำขอ AJAX และการทำให้ Plugin ของคุณเป็นสากล

คำถามที่พบบ่อย (FAQ)

การพัฒนา WordPress ปลั๊กอินต้องเชี่ยวชาญ PHP หรือไม่?

ใช่ การมีพื้นฐาน PHP ที่แข็งแกร่งเป็นสิ่งจำเป็น เนื่องจาก WordPress หลักและปลั๊กอินทั้งหมดเขียนด้วย PHP คุณต้องเข้าใจไวยากรณ์ ฟังก์ชัน การเขียนโปรแกรมเชิงวัตถุ และแนวคิดอื่น ๆ ของ PHP นอกจากนี้ การมีความเข้าใจพื้นฐานเกี่ยวกับ HTML, CSS และ JavaScript ก็มีประโยชน์ในการสร้างส่วนต่อประสานผู้ใช้และการโต้ตอบ

ปลั๊กอินต้องมีไฟล์กี่ไฟล์?

ไม่มีข้อกำหนดบังคับ ปลั๊กอินสามารถมีเพียงไฟล์ PHP หลักไฟล์เดียวได้ แต่เมื่อฟังก์ชันมีความซับซ้อนมากขึ้น การจัดรหัสให้เป็นโมดูลในหลายไฟล์ (เช่นadmin.phpจัดการแบ็กเอนด์,public.phpจัดการฟรอนต์เอนด์,includesโฟลเดอร์เก็บฟังก์ชันทั่วไป) เป็นวิธีที่ดีกว่า ซึ่งช่วยในการจัดระเบียบและบำรุงรักษาโค้ด

ทำไมปลั๊กอินของฉันถึงทำให้เว็บไซต์เป็นหน้าจอขาวหลังจากเปิดใช้งาน?

โดยปกติแล้วเกิดจากข้อผิดพลาดร้ายแรง (Fatal Error) เช่น ข้อผิดพลาดทางไวยากรณ์ การเรียกใช้ฟังก์ชันหรือคลาสที่ไม่มีอยู่ โปรดตรวจสอบให้แน่ใจว่าคุณได้เปิดใช้งานโหมดwp-config.phpในWP_DEBUGและตรวจสอบข้อความแสดงข้อผิดพลาดในไฟล์wp-content/debug.logการปิดใช้งานปลั๊กอินของคุณผ่าน FTP หรือตัวจัดการไฟล์ (โดยการเปลี่ยนชื่อโฟลเดอร์ปลั๊กอิน) สามารถกู้คืนการเข้าถึงเว็บไซต์ได้อย่างรวดเร็ว

จะจัดการกับข้อมูลที่ผู้ใช้ส่งจากด้านหน้าอย่างปลอดภัยได้อย่างไร?

ห้ามไว้ใจข้อมูลที่ผู้ใช้ป้อนเข้าไปโดยเด็ดขาด ก่อนที่จะประมวลผลข้อมูลใด ๆ ที่มาจากแบบฟอร์ม พารามิเตอร์ URL หรือคุกกี้ จำเป็นต้องตรวจสอบความถูกต้อง ทำความสะอาด และหลีกหนี WordPress มีฟังก์ชันความปลอดภัยมากมาย เช่นsanitize_text_field()(ทำความสะอาดข้อความ),esc_url()(หลีกหนี URL),wp_kses_post()(กรองเนื้อหาตามแท็ก HTML ที่อนุญาต) และintval()(แปลงเป็นจำนวนเต็ม) เมื่อส่งข้อมูลไปยังหน้า HTML ต้องใช้ฟังก์ชันเช่นesc_html()esc_attr()เพื่อหลีกหนีอักขระ

จะทำให้ข้อความปลั๊กอินของฉันรองรับหลายภาษาได้อย่างไร?

นี่ต้องทำผ่านการทำให้เป็นสากล (i18n) ในโค้ดของคุณ ให้ห่อสตริงทั้งหมดที่ต้องการแปลด้วยฟังก์ชัน__()_e()จากนั้นตั้งค่าText DomainDomain Pathอย่างถูกต้องในส่วนหัวความคิดเห็นของปลั๊กอิน ใช้เครื่องมือเช่น Poedit เพื่อสร้างไฟล์เทมเพลต.potและสร้างภาษาต่างๆสำหรับมัน.po.moแปลไฟล์ WordPress จะโหลดการแปลที่สอดคล้องกันโดยอัตโนมัติตามการตั้งค่าภาษาของเว็บไซต์