คู่มือการพัฒนา WordPress Plugins ฉบับสมบูรณ์: สร้างปลั๊กอินที่มีฟังก์ชันการทำงานแรกของคุณตั้งแต่เริ่มต้น

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

สภาพแวดล้อมการพัฒนาและพื้นฐานการเตรียมตัวสำหรับปลั๊กอิน WordPress

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

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

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

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

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

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

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

เริ่มต้นจากการสร้างปลั๊กอิน “Hello World” ที่ง่ายที่สุด กระบวนการนี้จะช่วยให้คุณเข้าใจโครงสร้างพื้นฐานของปลั๊กอินและวิธีที่ WordPress รับรู้ปลั๊กอิน

ก่อนอื่น ในไดเรกทอรีการติดตั้ง WordPress ของคุณwp-content/pluginsในโฟลเดอร์ ให้สร้างโฟลเดอร์ใหม่ ชื่อโฟลเดอร์ควรเป็นเอกลักษณ์ อธิบายได้ และใช้ตัวพิมพ์เล็กและขีดกลาง เช่นmy-first-plugin

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

ต่อไปนี้คือตัวอย่างไฟล์ปลั๊กอินพื้นฐานที่สุด:

แนะนำให้อ่าน เริ่มต้นจากศูนย์: ทำไมต้องเลือกพัฒนา WordPress Plugin

<?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
 */

// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
    exit; // 如果ABSPATH未定义,则退出
}

หลังจากบันทึกไฟล์นี้แล้ว ให้เข้าสู่ระบบแดชบอร์ด WordPress ของคุณและไปที่หน้า “ปลั๊กอิน” คุณควรเห็น “ปลั๊กอินแรกของฉัน” ปรากฏในรายการปลั๊กอิน ตอนนี้คุณสามารถเปิดใช้งานได้ แต่มันยังไม่ทำอะไรเลย ในโค้ดif ( ! defined( ‘ABSPATH’ ) )การตรวจสอบเป็นแนวปฏิบัติด้านความปลอดภัยที่สำคัญ เพื่อป้องกันไม่ให้ผู้ใช้เข้าถึงไฟล์ปลั๊กอินของคุณโดยตรงผ่าน URL และรับประกันว่าโค้ดจะทำงานเฉพาะในสภาพแวดล้อม WordPress เท่านั้น

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

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

ใช้ action hook เพื่อเพิ่มการแจ้งเตือนในหน้าจัดการ

action hook อนุญาตให้คุณเรียกใช้ฟังก์ชันของคุณเองในช่วงเวลาที่เฉพาะเจาะจงของ WordPress (เช่น หลังจากที่เริ่มต้นเสร็จสิ้น, เมื่อโหลดส่วนหัวของหน้า, เมื่อบันทึกโพสต์) มาลองเพิ่มฟังก์ชันง่ายๆ: แสดงข้อความต้อนรับที่ด้านบนของหน้าจัดการ WordPress

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

เราจะใช้admin_noticesaction hook นี้ ก่อนอื่นคุณต้องสร้างฟังก์ชันเพื่อแสดงเนื้อหา HTML จากนั้นใช้add_action()ฟังก์ชันเพื่อ “เชื่อม” ฟังก์ชันนี้เข้ากับ hook

ในไฟล์ปลั๊กอินหลักของคุณ เพิ่มโค้ดต่อไปนี้:

/**
 * 在管理后台显示欢迎通知
 */
function myfp_display_admin_notice() {
    ?&gt;
    <div class="notice notice-success is-dismissible">
        <p>ยินดีต้อนรับสู่การใช้ “ปลั๊กอินแรกของฉัน”! ปลั๊กอินถูกเปิดใช้งานเรียบร้อยแล้ว</p>
    </div>
    &lt;?php
}
// 将函数挂载到 admin_notices 动作钩子
add_action( &#039;admin_notices&#039;, &#039;myfp_display_admin_notice&#039; );

บันทึกและรีเฟรชแอดมิน WordPress ของคุณ คุณควรเห็นกล่องข้อความแจ้งเตือนความสำเร็จสีเขียวที่ด้านบนของหน้า ฟังก์ชันชื่อmyfp_display_admin_noticeใช้คำนำหน้าmyfp_(นำมาจากตัวย่อชื่อปลั๊กอิน) เพื่อหลีกเลี่ยงความขัดแย้งกับชื่อฟังก์ชันของปลั๊กอินหรือธีมอื่น นี่เป็นข้อกำหนดการตั้งชื่อที่ต้องปฏิบัติตาม

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

ใช้ฟิลเตอร์ฮุคเพื่อปรับเปลี่ยนเนื้อหาของโพสต์

ฟิลเตอร์ฮุคช่วยให้คุณสามารถปรับเปลี่ยนข้อมูลที่ถูกส่งผ่านใน WordPress ตัวอย่างเช่น คุณสามารถเปลี่ยนลักษณะของเนื้อหา หัวข้อ หรือบทคัดย่อของโพสต์ก่อนที่จะแสดงผลออกมา มาสร้างฟังก์ชันที่เพิ่มข้อความลิขสิทธิ์อัตโนมัติท้ายทุกโพสต์กัน

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

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

เพิ่มโค้ดต่อไปนี้ในไฟล์ปลั๊กอินของคุณ:

/**
 * 在文章内容末尾添加版权声明
 * @param string $content 原始的文章内容
 * @return string 修改后的文章内容
 */
function myfp_add_copyright_to_content( $content ) {
    // 仅对主循环中的单篇文章页面生效
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $copyright_text = '<p><em>ลิขสิทธิ์ของบทความนี้เป็นของเว็บไซต์นี้ การนำไปเผยแพร่ต่อโปรดระบุแหล่งที่มา</em></p>';
        $content .= $copyright_text;
    }
    return $content;
}
// 将函数挂载到 the_content 过滤器钩子,优先级为10
add_filter( 'the_content', 'myfp_add_copyright_to_content', 10 );

ตอนนี้ เมื่อคุณดูบทความใดๆ บนเว็บไซต์ ข้อความลิขสิทธิ์ที่คุณเพิ่มจะปรากฏที่ด้านล่างของเนื้อหา การตรวจสอบเงื่อนไขในฟังก์ชันis_single() && in_the_loop() && is_main_query()มีความสำคัญมาก มันรับประกันว่าข้อความนี้จะแสดงเฉพาะในลูปหลักของหน้าเนื้อหาเดี่ยวด้านหน้าเว็บไซต์เท่านั้น และจะไม่ปรากฏในรายการหน้าแรก วิดเจ็ต หรือที่อื่นๆ นี่เป็นรายละเอียดที่ต้องระวังในการเขียนปลั๊กอินคุณภาพสูง

การทำให้ปลั๊กอินเป็นสากลและแนวทางปฏิบัติที่ดีที่สุด

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

เตรียมข้อความปลั๊กอินเพื่อรองรับการแปล

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

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

function myfp_display_admin_notice() {
    ?&gt;
    <div class="notice notice-success is-dismissible">
        <p><?php _e( '欢迎使用“我的第一个插件”!插件已成功激活。', 'my-first-plugin' ); ?></p>
    </div>
    &lt;?php
}

function myfp_add_copyright_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $copyright_text = &#039;<p><em>' . esc_html__( '本文版权归本网站所有,转载请注明出处。', 'my-first-plugin' ) . '</em></p>';
        $content .= $copyright_text;
    }
    return $content;
}

โปรดทราบว่าแต่ละฟังก์ชันการแปลมีพารามิเตอร์ที่สอง‘my-first-plugin’ซึ่งคุณกำหนดไว้ในส่วนหัวของปลั๊กอินText Domainมันเป็นตัวระบุเฉพาะที่ใช้เพื่อให้ WordPress รู้ว่าสตริงเหล่านี้เป็นของปลั๊กอินใด

จากนั้นคุณต้องวางไฟล์แปล (.po และ .mo) ในDomain Path(即/languagesโฟลเดอร์) ที่ระบุในส่วนหัวของปลั๊กอิน คุณสามารถใช้เครื่องมือเช่น Poedit เพื่อสร้างและจัดการไฟล์แปลเหล่านี้

ปฏิบัติตามความปลอดภัยและมาตรฐานโค้ด

ความปลอดภัยเป็นสิ่งสำคัญที่สุดในการพัฒนาปลั๊กอิน อย่าเชื่อถือข้อมูลที่ผู้ใช้ป้อนเข้ามาเลย เมื่อประมวลผลข้อมูลใดๆ จาก$_GET$_POST$_REQUESTข้อมูลก่อน ต้องทำการตรวจสอบ ทำความสะอาด และหลีกเลี่ยงอักขระพิเศษ

WordPress มีฟังก์ชันมากมายที่จะช่วยคุณ:
* 验证(Validation):检查数据是否符合预期格式(如is_email())。
* 清理(Sanitization):清除数据中的非法字符(如sanitize_text_field()sanitize_email())。
* 转义(Escaping):在将数据输出到HTML、JavaScript或URL之前,确保其安全(如esc_html()esc_js()esc_url())。

นอกจากนี้ เมื่อทำงานกับฐานข้อมูลโดยตรง ต้องใช้คลาสฐานข้อมูลของ WordPress$wpdbวิธีการที่ให้ไว้ เช่น$wpdb->prepare()เพื่อป้องกันการโจมตี SQL injection

สรุป

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

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

ปลั๊กอินต้องอยู่ในโฟลเดอร์เสมอหรือไม่?

ไม่จำเป็นเสมอไป สำหรับปลั๊กอินไฟล์เดียวที่ง่ายมากๆ สามารถวางไว้ในplugin-name.phpวางไว้ก่อนแท็กwp-content/plugins/ได้โดยตรง แต่สำหรับปลั๊กอินใดๆ ที่มีหลายไฟล์ (เช่น CSS, JS, รูปภาพ หรือไฟล์ภาษา) ขอแนะนำอย่างยิ่งให้ใช้โฟลเดอร์แยกเพื่อจัดระเบียบไฟล์ที่เกี่ยวข้องทั้งหมด ซึ่งจะทำให้โครงสร้างชัดเจนและจัดการได้ง่ายขึ้น

จะสร้างหน้าตั้งค่าสำหรับปลั๊กอินของฉันได้อย่างไร?

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

ในการพัฒนา plugin ทำไมคำนำหน้าจึงสำคัญมาก?

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

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

ใน WordPress development เครื่องมือดีบั๊กที่แนะนำให้ใช้คือการเปิดใช้งานWP_DEBUGคุณสามารถทำได้ในwp-config.phpในไฟล์ โดยการตั้งค่าdefine( ‘WP_DEBUG’, true );เพื่อเปิดใช้งานมัน สิ่งนี้จะทำให้ข้อผิดพลาด คำเตือน และการแจ้งเตือนทั้งหมดของ PHP แสดงบนหน้าจอ สำหรับการดีบักที่ซับซ้อนยิ่งขึ้น คุณสามารถใช้error_log()ฟังก์ชันเพื่อเขียนข้อมูลไปยังบันทึกข้อผิดพลาดของเซิร์ฟเวอร์ หรือใช้เครื่องมือดีบัก PHP ระดับมืออาชีพ เช่น Xdebug ร่วมกับ IDE ของคุณเพื่อทำการดีบักทีละบรรทัด