สร้างปลั๊กอิน WordPress แรกของคุณทีละขั้นตอน: จากพื้นฐานสู่การพัฒนาเชิงปฏิบัติ

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

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

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

สภาพแวดล้อมการพัฒนาเป็นรากฐานของการทำงานที่มีประสิทธิภาพ คุณจำเป็นต้องสร้างสภาพแวดล้อมทดสอบในเครื่องที่เหมือนกับสภาพแวดล้อมออนไลน์ให้มากที่สุด แนะนำให้ใช้ชุดเซิร์ฟเวอร์ในเครื่องแบบรวม เช่น XAMPP, MAMP หรือ Local by Flywheel พร้อมกันนี้ ต้องแน่ใจว่าโปรแกรมแก้ไขโค้ดหรือสภาพแวดล้อมการพัฒนาแบบรวม (IDE) ของคุณรองรับการเน้นไวยากรณ์ PHP และการดีบัก เช่น VS Code, PhpStorm หรือ Sublime Text การเปิดใช้งานโหมดWP_DEBUGของ WordPress สำคัญอย่างยิ่งสำหรับขั้นตอนการพัฒนาในการตรวจหาข้อผิดพลาด คุณสามารถทำได้บนเว็บไซต์ของคุณwp-config.phpไฟล์เปิดใช้งานโดยการกำหนดdefine('WP_DEBUG', true);เพื่อเปิดใช้งาน

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

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

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

เขียนไฟล์หลักของปลั๊กอินและส่วนหัวความคิดเห็น

ก่อนอื่น ในไดเรกทอรีการติดตั้ง WordPress ของคุณwp-content/pluginsสร้างโฟลเดอร์ใหม่ในโฟลเดอร์ ตั้งชื่อว่าmy-first-pluginภายในโฟลเดอร์นั้น สร้างไฟล์ PHP ตั้งชื่อเดียวกันว่าmy-first-plugin.php

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

เปิดไฟล์นี้และป้อนหัวข้อความคิดเห็นข้อมูลปลั๊กอินมาตรฐานต่อไปนี้ ข้อมูลนี้จะปรากฏในหน้า “ปลั๊กอิน” ของการจัดการ 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
 */

หลังจากบันทึกไฟล์แล้ว เข้าสู่หน้า “ปลั๊กอิน” ในหลังบ้านการจัดการ WordPress คุณควรจะเห็น “ปลั๊กอินแรกของฉัน” ปรากฏในรายการปลั๊กอิน ในขณะนี้ให้เปิดใช้งานมัน แม้ว่าปลั๊กอินจะยังไม่ได้ทำหน้าที่ใด ๆ แต่ก็ถูก WordPress โหลดสำเร็จแล้ว

นำฟังก์ชันการแจ้งเตือนพื้นฐานในหลังบ้านไปใช้งาน

ตอนนี้ เราจะเพิ่มฟังก์ชันแรกให้กับปลั๊กอินนี้: แสดงข้อความต้อนรับที่ด้านบนของหลังบ้านการจัดการ เราจะใช้ของ WordPressadmin_noticesฮุค ในไฟล์หลักของปลั๊กอินที่ผ่านมา ใต้ส่วนหัวของคอมเมนต์ ให้เพิ่มโค้ดต่อไปนี้:

// 在管理后台显示自定义通知
function mfp_show_admin_notice() {
    ?&gt;
    <div class="notice notice-success is-dismissible">
        <p><?php _e( '欢迎使用“我的第一个插件”!', 'my-first-plugin' ); ?></p>
    </div>
    &lt;?php
}
add_action( &#039;admin_notices&#039;, &#039;mfp_show_admin_notice&#039; );

คำอธิบายโค้ด: เราได้สร้างฟังก์ชันชื่อmfp_show_admin_noticeซึ่งจะแสดงโค้ด HTML ของการแจ้งเตือนที่สอดคล้องกับสไตล์ของแอดมิน WordPress การใช้_e()ฟังก์ชันนี้เพื่อรองรับการแปลภาษาสากล (i18n) ในอนาคต สุดท้าย ผ่านadd_action()ฟังก์ชันจะติดตั้งฟังก์ชันที่กำหนดเองของเราลงบน "ฮุค" ของ WordPressadmin_noticesหลังจากบันทึกไฟล์แล้ว ให้รีเฟรชหน้าแอดมินของ WordPress คุณจะเห็นข้อความแจ้งเตือนความสำเร็จสีเขียวนี้

แนะนำให้อ่าน คู่มือการพัฒนา WordPress Plugin ฉบับสมบูรณ์: ตั้งแต่พื้นฐานสู่การใช้งานจริงระดับสูง

การพัฒนาฟังก์ชันหลักของปลั๊กอินอย่างลึกซึ้ง

หลังจากเรียนรู้โครงสร้างพื้นฐานแล้ว เราสามารถพัฒนาฟังก์ชันการทำงานที่ใช้งานได้จริงมากขึ้น ความต้องการทั่วไปอย่างหนึ่งคือการเพิ่มข้อความที่กำหนดเองโดยอัตโนมัติที่ท้ายเนื้อหาบทความ

การใช้ตัวกรองเพื่อแก้ไขเนื้อหาบทความ

WordPress มี “ตัวกรอง (Filter)” จำนวนมากสำหรับการปรับเปลี่ยนข้อมูลประเภทต่างๆ เพื่อเพิ่มข้อความต่อท้ายเนื้อหาบทความ เราจะใช้ตัวกรองthe_contentเพิ่มฟังก์ชันใหม่ต่อไปนี้ในไฟล์หลักของปลั๊กอิน:

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

ฟังก์ชันนี้รับเนื้อหาดั้งเดิม$contentผ่านการตรวจสอบเงื่อนไขเพื่อให้แน่ใจว่าจะเพิ่มข้อความ HTML ที่กำหนดเองของเราเฉพาะในหน้าโพสต์เดี่ยวและอยู่ในคิวรีหลักเท่านั้น จากนั้นส่งคืนเนื้อหาที่แก้ไขแล้ว วิธีนี้ไม่รุกล้ำและจะไม่แก้ไขเนื้อหาดั้งเดิมในฐานข้อมูล

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

สร้างหน้าการตั้งค่าการจัดการแบบง่าย

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

ก่อนอื่น ใช้admin_menuการเพิ่มเมนูย่อยด้วย Hook:

// 添加插件设置菜单到后台
function mfp_add_admin_menu() {
    add_options_page(
        '我的第一个插件设置', // 页面标题
        '我的插件设置',       // 菜单标题
        'manage_options',    // 权限要求
        'my-first-plugin',   // 菜单slug
        'mfp_options_page_html' // 显示页面内容的回调函数
    );
}
add_action( 'admin_menu', 'mfp_add_admin_menu' );

ต่อไป กำหนดฟังก์ชัน callbackmfp_options_page_htmlเพื่อเรนเดอร์ฟอร์ม HTML ของหน้าการตั้งค่า พร้อมกันนี้ เราจำเป็นต้องใช้ WordPress Settings API เพื่อลงทะเบียน บันทึก และดึงค่าตัวเลือกอย่างปลอดภัย เพื่อความกระชับ นี่คือเวอร์ชันที่เรียบง่ายของการนำไปใช้:

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

// 设置页面的HTML内容
function mfp_options_page_html() {
    // 检查用户权限
    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( 'mfp_options_group' );
            do_settings_sections( 'my-first-plugin' );
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="th"/></form>
    </div>
    <?php
}

// 初始化插件设置
function mfp_settings_init() {
    // 注册一个设置
    register_setting( 'mfp_options_group', 'mfp_footer_text' );

// 添加一个设置区域
    add_settings_section(
        'mfp_section',
        '自定义文本设置',
        null,
        'my-first-plugin'
    );

// 向区域中添加字段
    add_settings_field(
        'mfp_field_footer',
        '文章页脚文本',
        'mfp_field_footer_html',
        'my-first-plugin',
        'mfp_section'
    );
}
add_action( 'admin_init', 'mfp_settings_init' );

// 渲染文本输入字段
function mfp_field_footer_html() {
    $option = get_option( 'mfp_footer_text', '感谢阅读!本文由“我的第一个插件”为您呈现。' );
    ?>
    <input type='text' name='mfp_footer_text' value='<?php echo esc_attr( $option ); ?>' class='regular-text'>
    <p class="description">เนื้อหาที่ป้อนที่นี่จะปรากฏที่ส่วนท้ายของแต่ละบทความ</p>
    &lt;?php
}

สุดท้าย แก้ไขก่อนหน้านี้mfp_append_to_contentฟังก์ชัน เพื่อให้อ่านข้อความจากตัวเลือกฐานข้อมูลmfp_footer_textแทนการใช้ข้อความที่เข้ารหัสแบบตายตัว

ความปลอดภัยของปลั๊กอิน การปรับปรุง และการเตรียมการเผยแพร่

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

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

ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัย

ข้อมูลที่ผู้ใช้ป้อนทั้งหมดต้องถูกหน่วงหรือตรวจสอบก่อนที่จะแสดงผลในเบราว์เซอร์หรือบันทึกลงในฐานข้อมูล เมื่อแสดงผลให้ใช้ฟังก์ชันesc_html()esc_attr()esc_url()เมื่อประมวลผลการส่งฟอร์มหรือคำขอ AJAX ให้ใช้wp_verify_nonce()check_admin_referer()เพื่อตรวจสอบความถูกต้องของคำขอและป้องกันการโจมตีแบบ Cross-Site Request Forgery (CSRF) อย่าเชื่อถือข้อมูลใน$_GET$_POST$_REQUESTโดยตรง

การสนับสนุนความเป็นสากล

เพื่อให้ปลั๊กอินสามารถใช้งานได้โดยผู้ใช้ทั่วโลก จำเป็นต้องแปลสตริงที่เกี่ยวข้องกับผู้ใช้ทั้งหมดในโค้ดเป็นภาษาสากล เราได้ใช้สิ่งนี้ในตัวอย่างก่อนหน้านี้แล้ว_e()ฟังก์ชันเพื่อแสดงข้อความที่แปล นอกจากนี้คุณต้องประกาศในส่วนหัวความคิดเห็นของปลั๊กอินText DomainDomain Path
ในระหว่างการเริ่มต้นปลั๊กอิน (เช่นผ่านplugins_loadedฮุค) ให้ใช้load_plugin_textdomain()ฟังก์ชันเพื่อโหลดไฟล์ภาษา:

function mfp_load_textdomain() {
    load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'mfp_load_textdomain' );

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

การจัดระเบียบโค้ดและการพิจารณาประสิทธิภาพ

เมื่อฟังก์ชันการทำงานของปลั๊กอินเพิ่มขึ้น ไม่ควรวางโค้ดทั้งหมดไว้ในไฟล์หลัก วิธีที่เหมาะสมคือการแยกโค้ดออกเป็นโมดูลตามฟังก์ชันการทำงานไปยังไฟล์ที่แตกต่างกัน.phpในไฟล์ และรวมเข้าผ่านไฟล์หลักแบบเลือกได้ ตัวอย่างเช่น สามารถสร้างincludes/admin/ไดเรกทอรีเพื่อเก็บโค้ดที่เกี่ยวข้องกับแบ็กเอนด์includes/public/เก็บโค้ดที่เกี่ยวข้องกับฟรอนต์เอนด์includes/class-*.phpเก็บคำนิยามคลาส
สำหรับการดำเนินการที่ใช้ทรัพยากรเข้มข้น ให้พิจารณาใช้ WordPress Transients API เพื่อเก็บผลลัพธ์ของคำสั่งที่ใช้เวลานาน หรือใช้ Cron API เพื่อประมวลผลงานที่ไม่เร่งด่วนในพื้นหลัง ตรวจสอบให้แน่ใจว่าเมื่อปลั๊กอินถูกปิดใช้งาน มันสามารถล้างข้อมูลและตัวเลือกที่สร้างขึ้นผ่านการลงทะเบียน uninstall hook (ผ่านregister_uninstall_hook()) เพื่อให้ไซต์เป็นระเบียบเรียบร้อย

สรุป

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

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

การพัฒนา WordPress Plugin ต้องมีความรู้อะไรบ้างเป็นพื้นฐาน?

คุณต้องมีพื้นฐานการเขียนโปรแกรม PHP ที่แข็งแกร่ง เนื่องจากโค้ดของปลั๊กอินส่วนใหญ่เขียนด้วย PHP นอกจากนี้ ยังต้องมีความเข้าใจพื้นฐานเกี่ยวกับ HTML, CSS และ JavaScript เพื่อจัดการกับการแสดงผลและปฏิสัมพันธ์ส่วนหน้า (Frontend) การทำความเข้าใจแนวคิดพื้นฐานของ WordPress เช่น Theme, Post Type, Taxonomy และโดยเฉพาะระบบ Hooks (รวมถึง Actions และ Filters) เป็นสิ่งสำคัญมาก

###
ไฟล์พื้นฐานที่จำเป็นที่สุดสำหรับ WordPress Plugin คืออะไร?

ในกรณีพื้นฐานที่สุด ปลั๊กอินสามารถมีเพียงไฟล์ PHP เพียงไฟล์เดียว แต่ไฟล์นี้ต้องมีส่วนหัวความคิดเห็น (Plugin Headers) ที่เป็นไปตามมาตรฐานของ WordPress อยู่ด้านบนสุด ซึ่งก็คือส่วนที่อยู่ในตัวอย่างของเราPlugin NameDescriptionสำหรับฟิลด์ต่างๆ นี่เป็นพื้นฐานเดียวที่ WordPress ใช้ในการระบุและแสดงในรายการการจัดการปลั๊กอิน

###
ฉันควรตั้งชื่อฟังก์ชันและตัวแปรของปลั๊กอินของฉันอย่างไร

เพื่อหลีกเลี่ยงความขัดแย้งกับโค้ดของ WordPress หลัก ธีม หรือปลั๊กอินอื่น ฟังก์ชัน คลาส ตัวแปร และค่าคงที่ที่กำหนดเองทั้งหมดควรใช้คำนำหน้าที่ไม่ซ้ำใคร โดยทั่วไปแนะนำให้ใช้คำนำหน้าที่เกี่ยวข้องกับตัวย่อหรือชื่อย่อของปลั๊กอิน เช่น ในตัวอย่างของเราใช้mfp_(แทน My First Plugin) ชื่อคลาสควรปฏิบัติตามกฎนี้เช่นกัน และพยายามใช้ชื่อเต็มที่มีความหมายให้มากที่สุด

###
ตารางฐานข้อมูลหรือตัวเลือกที่สร้างขึ้นในปลั๊กอินจะถูกทำความสะอาดหลังจากลบปลั๊กอินหรือไม่?

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

###
จะทำให้ปลั๊กอินของฉันเข้ากันได้กับ WordPress รุ่นต่างๆ มากขึ้นได้อย่างไร

ในโค้ด หลีกเลี่ยงการใช้ฟังก์ชัน PHP หรือฟังก์ชันเฉพาะของ WordPress ที่เป็นเวอร์ชันใหม่เกินไป ก่อนใช้ฟังก์ชัน คลาส หรือฮุคใดๆ ควรตรวจสอบเอกสารทางการก่อน เพื่อทราบว่าเวอร์ชัน WordPress ใดที่แนะนำมาใช้ คุณสามารถประกาศเวอร์ชัน WordPress ขั้นต่ำที่รองรับได้ผ่านฟิลด์Requires at least:ในส่วนความคิดเห็นของไฟล์หลักของปลั๊กอิน ในโค้ด สามารถใช้คำสั่งเงื่อนไขร่วมกับการตรวจสอบfunction_exists()class_exists()เพื่อให้มีทางเลือกสำรองหรือแสดงข้อความแจ้งเตือนที่เป็นมิตร