คู่มือเริ่มต้นการพัฒนา WordPress Plugin: สร้างส่วนขยายฟังก์ชันแรกของคุณตั้งแต่เริ่มต้น

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

การเตรียมการและการตั้งค่าสภาพแวดล้อม

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

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

ภายในไดเรกทอรีนี้ สร้างไฟล์ปลั๊กอินหลักของคุณ เช่น ตั้งชื่อเป็น my-first-plugin.phpไฟล์นี้ต้องเริ่มต้นด้วยความคิดเห็นข้อมูลปลั๊กอินมาตรฐาน

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

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

ตอนนี้ มาสร้างโครงสร้างพื้นฐานของปลั๊กอินกัน ในไดเรกทอรีปลั๊กอินของคุณ เปิดไฟล์ PHP หลักและเขียนข้อมูลส่วนหัวมาตรฐานของปลั๊กอินดังต่อไปนี้

UltaHost WordPress โฮสติ้ง
การรับประกันคืนเงินภายใน 30 วัน, แบนด์วิธและฐานข้อมูลไม่จำกัด, การป้องกัน DDoS ฟรี, ซื้อ 3 ปีลดราคา 50%
<?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 ใช้ในการระบุปลั๊กอิน โดยPlugin Name เป็นข้อมูลที่ต้องระบุ ส่วนอื่นๆ เป็นตัวเลือก หลังจากบันทึกไฟล์แล้ว คุณจะเห็นปลั๊กอินใหม่นี้ในหน้า “ปลั๊กอิน” ของแผงควบคุม WordPress และสามารถเปิดใช้งานได้ ปัจจุบันยังไม่มีฟังก์ชันการทำงานใดๆ

เพิ่มฟังก์ชันง่ายๆ ให้กับปลั๊กอิน

ฟังก์ชันที่ง่ายที่สุดคือการเพิ่มเมนูการจัดการที่กำหนดเองในแอดมินของเว็บไซต์ เราจะใช้ add_action ฟังก์ชันถูกติดตั้งบน admin_menu action hook นี้

ในไฟล์ปลั๊กอินหลัก หลังจากบล็อกความคิดเห็น ให้เพิ่มโค้ดต่อไปนี้:

// 在管理菜单中添加一个顶级菜单
function mfp_add_admin_menu() {
    add_menu_page(
        '我的第一个插件设置', // 页面标题
        '我的插件',           // 菜单标题
        'manage_options',     // 权限要求
        'my-first-plugin',    // 菜单 slug
        'mfp_settings_page',  // 回调函数,用于输出页面内容
        'dashicons-admin-generic', // 图标(可选)
        6                     // 菜单位置(可选)
    );
}
add_action('admin_menu', 'mfp_add_admin_menu');

// 定义设置页面的回调函数
function mfp_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <p>ยินดีต้อนรับสู่หน้าการตั้งค่าปลั๊กอินแรกของฉัน!</p>
        <form method="post" action="/th/options.php/" data-trp-original-action="options.php">
            <?php
            // 后续可以在这里添加设置字段
            ?>
            <p class="submit">
                <input type="submit" name="submit" id="submit" class="button button-primary" value="บันทึกการเปลี่ยนแปลง">
            </p>
        <input type="hidden" name="trp-form-language" value="th"/></form>
    </div>
    &lt;?php
}

โค้ดนี้สร้างเมนูระดับบนสุดใหม่ชื่อ “ปลั๊กอินของฉัน” เมื่อคลิกจะนำไปยังหน้าการตั้งค่าที่เรียบง่าย ที่นี่เราใช้ add_menu_page ฟังก์ชันเพื่อลงทะเบียนเมนู และกำหนดฟังก์ชันคอลแบ็ก mfp_settings_page เพื่อเรนเดอร์เนื้อหาของหน้า

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

ใช้ฮุกและตัวกรองเพื่อขยายฟังก์ชันการทำงาน

ความแข็งแกร่งหลักของ WordPress อยู่ที่สถาปัตยกรรมปลั๊กอิน ซึ่งทำงานผ่านฮุกแอ็กชันและฮุกตัวกรองเป็นหลัก ฮุกแอ็กชันอนุญาตให้คุณดำเนินโค้ดที่กำหนดเองในช่วงเวลาที่กำหนด ในขณะที่ฮุกตัวกรองอนุญาตให้คุณปรับเปลี่ยนข้อมูล

ใช้ action hook เพื่อเพิ่มหมายเหตุท้ายหน้า

สมมติว่าเราต้องการเพิ่มข้อความที่กำหนดเองโดยอัตโนมัติที่ท้ายบทความทั้งหมดบนเว็บไซต์ ซึ่งสามารถทำได้โดยการเชื่อมต่อกับ the_content filter hook นี้ ระวังว่าแม้ว่าชื่อจะเป็น “ตัวกรอง” แต่ the_content มักใช้สำหรับการปรับเปลี่ยนผลลัพธ์เนื้อหาบทความ

// 在文章内容末尾添加自定义文本
function mfp_append_text_to_content($content) {
    // 确保只在主循环的单篇文章页面添加
    if (is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query()) {
        $custom_text = '<p><em>บทความนี้ถูกนำเสนอโดย “ปลั๊กอินแรกของฉัน”</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
add_filter('the_content', 'mfp_append_text_to_content');

ฟังก์ชันนี้ mfp_append_text_to_content รับเนื้อหาบทความต้นฉบับ $contentหลังจากตรวจสอบเงื่อนไขบริบท (เพื่อให้แน่ใจว่าเป็นหน้าเนื้อหาแยกต่างหาก) แล้ว จะเพิ่มข้อความที่กำหนดเองลงท้ายเนื้อหา และสุดท้ายส่งคืนเนื้อหาที่แก้ไขแล้ว ผ่าน add_filter การลงทะเบียนไปยัง the_content ฮุก

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

สร้างตัวเลือกปลั๊กอินที่กำหนดค่าได้

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

ก่อนอื่น เราต้องลงทะเบียนการตั้งค่าและเพิ่มลงในหน้าเมนูที่มีอยู่แล้ว

// 初始化插件设置
function mfp_settings_init() {
    // 注册一个新的设置到 “reading” 组(或自定义组)
    register_setting('mfp_plugin_settings', 'mfp_custom_message');

// 在现有页面内添加一个设置区域
    add_settings_section(
        'mfp_section_id',
        '自定义消息设置',
        'mfp_section_callback',
        'my-first-plugin'
    );

// 向该区域添加一个字段
    add_settings_field(
        'mfp_field_id',
        '页脚消息',
        'mfp_field_callback',
        'my-first-plugin',
        'mfp_section_id'
    );
}
add_action('admin_init', 'mfp_settings_init');

// 区域描述回调函数
function mfp_section_callback() {
    echo '<p>กำหนดค่าข้อความที่จะแสดงที่ท้ายบทความสำหรับปลั๊กอินที่นี่</p>';
}

// 字段输出回调函数
function mfp_field_callback() {
    // 从数据库中获取已保存的选项值
    $message = get_option('mfp_custom_message', '本文由“我的第一个插件”为您呈现。');
    echo '<input type="text" name="mfp_custom_message" value="' . esc_attr($message) . '" class="regular-text">';
    echo '<p class="description">ป้อนข้อความที่คุณต้องการแสดงที่ท้ายบทความทุกบทความ</p>';
}

จากนั้น จำเป็นต้องแก้ไขที่กำหนดไว้ก่อนหน้านี้ mfp_settings_page ฟังก์ชัน สำหรับแสดงฟิลด์การตั้งค่าในฟอร์ม

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

// 更新后的设置页面回调函数
function mfp_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <form method="post" action="/th/options.php/" data-trp-original-action="options.php">
            <?php
            // 输出设置字段、安全随机数和设置组
            settings_fields('mfp_plugin_settings');
            do_settings_sections('my-first-plugin');
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="th"/></form>
    </div>
    &lt;?php
}

สุดท้าย อัปเดตฟังก์ชันที่แนบข้อความก่อนหน้านี้เพื่อใช้ตัวเลือกที่กำหนดค่าได้

function mfp_append_text_to_content($content) {
    if (is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query()) {
        // 从选项中获取自定义消息,如果不存在则使用默认值
        $custom_text = get_option('mfp_custom_message', '本文由“我的第一个插件”为您呈现。');
        if (!empty($custom_text)) {
            $content .= '<p><em>' . wp_kses_post($custom_text) . '</em></p>';
        }
    }
    return $content;
}

การเตรียมปลั๊กอินสำหรับสากลและการเผยแพร่

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

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

ใช้ฟังก์ชันการแปลเพื่อห่อหุ้มข้อความ

คุณต้องใช้ฟังก์ชันการแปลเฉพาะเพื่อห่อหุ้มสตริงทั้งหมดที่แสดงผลในปลั๊กอิน (เช่น ข้อความที่ส่งกลับโดย echo หรือ ``) ที่ใช้บ่อยที่สุดคือ () สำหรับการแปลและส่งคืนสตริง และ esc_html__() สำหรับการแปลและหลีกเลี่ยง HTML

แก้ไขตัวอย่างโค้ดก่อนหน้า:

// 在管理菜单中添加一个顶级菜单(国际化版本)
function mfp_add_admin_menu() {
    add_menu_page(
        __('我的第一个插件设置', 'my-first-plugin'), // 页面标题
        __('我的插件', 'my-first-plugin'),           // 菜单标题
        'manage_options',
        'my-first-plugin',
        'mfp_settings_page',
        'dashicons-admin-generic',
        6
    );
}
add_action('admin_menu', 'mfp_add_admin_menu');

// 区域描述回调函数(国际化版本)
function mfp_section_callback() {
    echo '<p>' . esc_html__('在这里配置插件在文章末尾显示的消息。', 'my-first-plugin') . '</p>';
}

ในขณะเดียวกัน จำเป็นต้องโหลดพื้นที่ข้อความ หลังจากบล็อกความคิดเห็นในไฟล์หลักของปลั๊กอิน ให้เพิ่มโค้ดสำหรับโหลดไฟล์แปล:

// 加载插件文本域
function mfp_load_textdomain() {
    load_plugin_textdomain('my-first-plugin', false, dirname(plugin_basename(__FILE__)) . '/languages/');
}
add_action('plugins_loaded', 'mfp_load_textdomain');

เตรียมแพ็คเกจบีบอัดปลั๊กอิน

ก่อนที่จะเผยแพร่หรือแชร์ปลั๊กอิน คุณต้องสร้างชุดเผยแพร่ที่สะอาด ตรวจสอบให้แน่ใจว่าไดเรกทอรีปลั๊กอินของคุณมีไฟล์ที่จำเป็นทั้งหมด และไม่รวมเนื้อหาที่ไม่เกี่ยวข้อง เช่น โฟลเดอร์ .git ไฟล์บันทึก หรือไฟล์การกำหนดค่า IDE โดยทั่วไป ชุดเผยแพร่ปลั๊กอินที่เล็กที่สุดควรประกอบด้วย:
1. 主插件 PHP 文件。
2. 一个可选的 readme.txt ไฟล์ที่ทำตามมาตรฐานรูปแบบของ WordPress.org สำหรับแสดงในไดเรกทอรีปลั๊กอิน
3. 一个包含翻译文件的 /languages โฟลเดอร์ (ถ้ามี)
4. 其他必需的 JavaScript、CSS 或图片资源文件夹。

บีบอัดโฟลเดอร์ปลั๊กอินทั้งหมดเป็นไฟล์ ZIP ซึ่งไฟล์นี้สามารถติดตั้งผ่านฟังก์ชัน “อัปโหลดปลั๊กอิน” ใน WordPress แดชบอร์ด หรือส่งไปยังไดเรกทอรีปลั๊กอินอย่างเป็นทางการของ WordPress

สรุป

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

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

### การพัฒนา WordPress ปลั๊กอินต้องมีพื้นฐานการเขียนโปรแกรมอะไรบ้าง?

คุณจำเป็นต้องมีความรู้พื้นฐานในการเขียนโปรแกรม PHP เนื่องจาก WordPress หลักและปลั๊กอินส่วนใหญ่เขียนด้วยภาษา PHP นอกจากนี้ การมีความเข้าใจพื้นฐานเกี่ยวกับ HTML, CSS และ JavaScript จะเป็นประโยชน์อย่างมาก โดยเฉพาะอย่างยิ่งเมื่อคุณจำเป็นต้องปรับแต่งอินเทอร์เฟซผู้ดูแลระบบหรือการโต้ตอบส่วนหน้า (front-end) การเข้าใจแนวคิดพื้นฐานของ WordPress เช่น โพสต์ หน้า แท็กซอนอมี และฮุค ก็เป็นสิ่งจำเป็นเช่นกัน

ไฟล์หลักของปลั๊กอินต้องมีชื่อว่าอะไร?

ไม่มีข้อกำหนดบังคับ ไฟล์หลักสามารถเป็นชื่อไฟล์ PHP ที่ถูกต้องใดก็ได้ แต่โดยทั่วไปแนะนำให้ใช้ชื่อที่สอดคล้องกับชื่อไดเรกทอรีปลั๊กอิน เช่น หากชื่อไดเรกทอรีคือ my-super-pluginไฟล์หลักสามารถตั้งชื่อเป็น my-super-plugin.phpได้ สิ่งสำคัญคือความคิดเห็นส่วนหัวของปลั๊กอินที่ด้านบนของไฟล์ WordPress ใช้ความคิดเห็นใน Plugin Name: เพื่อระบุปลั๊กอิน

ฉันจะดีบั๊กโค้ดปลั๊กอินของฉันได้อย่างไร?

มีหลายวิธีในการดีบั๊กปลั๊กอิน อย่างแรก ตรวจสอบให้แน่ใจว่าเปิดโหมดดีบั๊กของ WordPress ในไฟล์ wp-config.php ของคุณ โดยตั้งค่า WP_DEBUG เป็น trueซึ่งจะแสดงข้อผิดพลาด คำเตือน และการแจ้งเตือนของ PHP บนหน้าเว็บ นอกจากนี้ ยังสามารถใช้ฟังก์ชัน error_log() เพื่อเขียนข้อมูลดีบั๊กลงในบันทึกข้อผิดพลาดของเซิร์ฟเวอร์ หรือใช้เครื่องมือดีบั๊กขั้นสูง เช่น ปลั๊กอิน Query Monitor ซึ่งสามารถให้รายละเอียดเกี่ยวกับคำสั่งฐานข้อมูล ฮุค ข้อผิดพลาด PHP และอื่นๆ

ฉันจะเผยแพร่ปลั๊กอินที่ฉันพัฒนาบนไดเรกทอรีปลั๊กอินอย่างเป็นทางการของ WordPress ได้อย่างไร

ในการเผยแพร่ปลั๊กอินไปยังไดเรกทอรีปลั๊กอินอย่างเป็นทางการของ WordPress.org คุณต้องลงทะเบียนบัญชีบน WordPress.org ก่อน จากนั้นส่งปลั๊กอินของคุณเพื่อตรวจสอบ รหัสปลั๊กอินของคุณต้องเป็นไปตามใบอนุญาต GNU GPL และต้องมีไฟล์ readme.txt ที่มีรูปแบบถูกต้อง readme.txt ทีมตรวจสอบจะตรวจสอบคุณภาพรหัส ความปลอดภัย และการปฏิบัติตามแนวทางไดเรกทอรี หลังจากผ่านการตรวจสอบ คุณจะได้รับที่เก็บ SVN สำหรับการจัดการและอัปเดตรุ่นปลั๊กอินของคุณ