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

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

การพัฒนา WordPress Plugin เป็นทักษะหลักในการขยายฟังก์ชันการทำงานของเว็บไซต์และตอบสนองความต้องการเฉพาะบุคคล เมื่อเทียบกับการแก้ไขไฟล์ธีม functions.php การใช้ปลั๊กอินช่วยให้มั่นใจได้ว่าฟังก์ชันการทำงานเป็นอิสระจากธีม ทำให้ง่ายต่อการย้าย จัดการ และบำรุงรักษา บทความนี้จะแนะนำคุณตั้งแต่เริ่มต้น ในการสร้างปลั๊กอินที่มีโครงสร้างสมบูรณ์และเป็นไปตามมาตรฐานการเข้ารหัสของ WordPress

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

ก่อนที่จะเขียนโค้ดบรรทัดแรก คุณต้องมีสภาพแวดล้อมการพัฒนาที่เหมาะสมและมีความเข้าใจพื้นฐานเกี่ยวกับโครงสร้างของ WordPress

การตั้งค่าสภาพแวดล้อมการพัฒนา

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

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

ทำความเข้าใจโครงสร้างปลั๊กอิน WordPress

ปลั๊กอิน WordPress โดยพื้นฐานแล้วคือไฟล์ PHP หนึ่งไฟล์ขึ้นไป ที่เก็บไว้ในไดเรกทอรี wp-content/plugins/ หลักการสำคัญคือกลไก “ฮุค” ปลั๊กอินทำงานผ่าน “แอ็กชันฮุค” เพื่อรันโค้ดในช่วงเวลาที่กำหนด หรือผ่าน “ฟิลเตอร์ฮุค” เพื่อปรับเปลี่ยนข้อมูลที่ฟังก์ชันอื่นส่งออก การเข้าใจ add_actionadd_filter ทั้งสองฟังก์ชันนี้คือกุญแจสำคัญในการเริ่มต้นพัฒนาปลั๊กอิน

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

สร้างปลั๊กอินแรกของคุณ: วิดเจ็ตทักทาย

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

สร้างไฟล์หลักของปลั๊กอิน

ก่อนอื่นใน wp-content/plugins/ สร้างโฟลเดอร์ใหม่ในไดเรกทอรีและตั้งชื่อว่า my-first-greeting-pluginภายในโฟลเดอร์นั้น สร้างไฟล์ปลั๊กอินหลัก my-first-greeting-plugin.php

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

<?php
/**
 * Plugin Name: 每日问候
 * Plugin URI:  https://www.yourwebsite.com/my-first-greeting-plugin
 * Description: 这是一个示例插件,用于在仪表盘显示个性化问候。
 * Version:     1.0.0
 * Author:      Your Name
 * Author URI:  https://www.yourwebsite.com
 * License:     GPL v2 or later
 * Text Domain: my-first-greeting
 */

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

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

เพิ่มวิดเจ็ตให้กับแดชบอร์ด

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

// 添加仪表盘小工具
function mfgp_add_dashboard_widget() {
    wp_add_dashboard_widget(
        'mfgp_dashboard_widget',          // 小工具唯一ID
        '每日问候',                       // 小工具标题
        'mfgp_dashboard_widget_content'  // 显示内容的回调函数
    );
}
add_action( 'wp_dashboard_setup', 'mfgp_add_dashboard_widget' );

// 定义小工具内容
function mfgp_dashboard_widget_content() {
    $user = wp_get_current_user();
    $hour = date('G'); // 获取当前小时(24小时制)

if ( $hour &gt;= 5 &amp;&amp; $hour < 12 ) {
        $greeting = '早上好';
    } elseif ( $hour >= 12 &amp;&amp; 13:00 &lt; 18 ) {
        $greeting = &#039;下午好&#039;;
    } else {
        $greeting = &#039;晚上好&#039;;
    }

echo &#039;<p>' . sprintf( esc_html__( '%s,%s!欢迎回来。', 'my-first-greeting' ), $greeting, esc_html( $user-&gt;display_name ) ) . '</p>';
    echo '<p>' . esc_html__( '这是你的第一个插件创建的问候小工具。', 'my-first-greeting' ) . '</p>';
}

โค้ดนี้ทำสองสิ่ง: ประการแรก กำหนดฟังก์ชัน mfgp_add_dashboard_widgetใน wp_add_dashboard_widget การลงทะเบียนวิดเจ็ต จากนั้นกำหนด mfgp_dashboard_widget_content ฟังก์ชันเพื่อสร้างเนื้อหาของวิดเจ็ต ซึ่งจะแสดงคำทักทายที่แตกต่างกันตามเวลาของวัน และเรียกชื่อผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน ระวังว่าเราใช้ esc_html__()esc_html() ฟังก์ชันสำหรับการเตรียมการแปลและการหนีออกเอาต์พุต ซึ่งเป็นแนวปฏิบัติสำคัญเพื่อความปลอดภัยและความเป็นสากล

หลังจากเปิดใช้งานปลั๊กอินแล้ว ให้รีเฟรชหน้าแดชบอร์ด คุณจะเห็นวิดเจ็ต “ทักทายประจำวัน” แล้ว

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

การปรับปรุงฟังก์ชันปลั๊กอินและการปฏิบัติด้านความปลอดภัย

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

เพิ่มหน้าในการตั้งค่าปลั๊กอิน

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

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

แนะนำให้อ่าน WordPress Plugin Development Beginner's Guide: สร้างปลั๊กอินที่กำหนดเองตัวแรกของคุณตั้งแต่เริ่มต้น

// 添加设置菜单
function mfgp_add_admin_menu() {
    add_options_page(
        '每日问候设置',                // 页面标题
        '每日问候',                    // 菜单标题
        'manage_options',             // 所需权限
        'my-first-greeting-plugin',   // 菜单slug
        'mfgp_settings_page_content' // 回调函数
    );
}
add_action( 'admin_menu', 'mfgp_add_admin_menu' );

จากนั้น สร้างเนื้อหาของหน้าตั้งค่า ลงทะเบียนตัวเลือกการตั้งค่า และจัดการการบันทึกแบบฟอร์ม:

// 设置页面内容
function mfgp_settings_page_content() {
    ?&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
            settings_fields( 'mfgp_settings_group' ); // 输出安全字段
            do_settings_sections( 'my-first-greeting-plugin' ); // 输出设置区块
            submit_button(); // 输出提交按钮
            ?>
        <input type="hidden" name="trp-form-language" value="th"/></form>
    </div>
    <?php
}

// 初始化设置
function mfgp_settings_init() {
    register_setting(
        'mfgp_settings_group', // 选项组名
        'mfgp_custom_message', // 选项名
        array( 'sanitize_callback' => 'sanitize_text_field' ) // 清理回调
    );

add_settings_section(
        'mfgp_section', // 区块ID
        '自定义问候设置', // 区块标题
        null, // 区块描述回调(无)
        'my-first-greeting-plugin' // 所属页面
    );

add_settings_field(
        'mfgp_field',
        '自定义问候语前缀',
        'mfgp_field_callback', // 输出字段HTML的回调
        'my-first-greeting-plugin',
        'mfgp_section'
    );
}
add_action( 'admin_init', 'mfgp_settings_init' );

// 设置字段的回调函数
function mfgp_field_callback() {
    $value = get_option( 'mfgp_custom_message', '祝您有愉快的一天,' );
    echo '<input type="text" name="mfgp_custom_message" value="' . esc_attr( $value ) . '" class="regular-text" />';
    echo '<p class="description">ข้อความนี้จะถูกเพิ่มก่อนคำทักทาย</p>';
}

สุดท้าย แก้ไขฟังก์ชันเนื้อหา Widget เพื่อให้การตั้งค่าที่กำหนดเองของผู้ใช้มีผล:

โฮสติ้งแบบแชร์ของ InterServer
共享主机每月 $2.50 USD , 首月 $0.1 USD 优惠码 tryinterserver, 461个云应用脚本,一键安装。
// 更新小工具内容函数,使用自定义消息
function mfgp_dashboard_widget_content() {
    $user = wp_get_current_user();
    $hour = date('G');
    $custom_msg = get_option( 'mfgp_custom_message', '祝您有愉快的一天,' );

if ( $hour &gt;= 5 &amp;&amp; $hour < 12 ) {
        $greeting = '早上好';
    } elseif ( $hour >= 12 &amp;&amp; 13:00 &lt; 18 ) {
        $greeting = &#039;下午好&#039;;
    } else {
        $greeting = &#039;晚上好&#039;;
    }

echo &#039;<p>' . esc_html( $custom_msg ) . sprintf( esc_html__( '%s,%s!', 'my-first-greeting' ), $greeting, esc_html( $user-&gt;display_name ) ) . '</p>';
}

ตอนนี้ ในเมนู “การตั้งค่า” ของ WordPress แผงควบคุม จะมีหน้า “คำทักทายประจำวัน” ที่ผู้ดูแลระบบสามารถบันทึกคำนำหน้าทักทายที่กำหนดเองได้

ปฏิบัติตามมาตรฐานความปลอดภัยและการเข้ารหัส

ในระหว่างกระบวนการพัฒนา ต้องปฏิบัติตามหลักความปลอดภัยของ WordPress: ใช้ฟังก์ชันการหนี (escaping) ที่เหมาะสมสำหรับข้อมูลทั้งหมดที่มาจากผู้ใช้หรือฐานข้อมูลและกำลังจะถูกแสดงผล (เช่น esc_html, esc_attr, esc_urlปฏิบัติตามมาตรฐานการเขียนโค้ดของ WordPress: ปฏิบัติตามแนวทางของ WordPress Coding Standards เพื่อความสอดคล้องและความสามารถในการบำรุงรักษาของโค้ด sanitize_text_field);ใช้ wp_kses_postwp_kses เพื่ออนุญาตให้ใช้ HTML ที่ปลอดภัย ในขณะเดียวกัน แนะนำให้ปฏิบัติตาม มาตรฐานการเข้ารหัส PHP อย่างเป็นทางการของ WordPressเพื่อให้มั่นใจว่าการเขียนโค้ดมีความชัดเจนและสม่ำเสมอ

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

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

การทำให้ปลั๊กอินเป็นสากล

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

// 加载文本域以实现国际化
function mfgp_load_textdomain() {
    load_plugin_textdomain( 'my-first-greeting', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'mfgp_load_textdomain' );

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

เตรียมพร้อมสำหรับการเผยแพร่ไปยังไดเรกทอรีทางการ

หากคุณวางแผนที่จะส่งปลั๊กอินไปยังไดเรกทอรีปลั๊กอินของ WordPress.org คุณต้องมั่นใจในคุณภาพของโค้ดและรวมไฟล์เมตาดาต้าที่จำเป็น ตัวอย่างเช่น สร้างไฟล์ readme.txt ซึ่งรูปแบบต้องเป็นไปตาม ข้อกำหนดเฉพาะของ WordPressโดยมีชื่อปลั๊กอิน คำอธิบาย ขั้นตอนการติดตั้ง คำถามที่พบบ่อย ประวัติการอัปเดต เป็นต้น นอกจากนี้ พิจารณาเพิ่มฮุคการถอนการติดตั้ง เพื่อทำความสะอาดตัวเลือกในฐานข้อมูลเมื่อผู้ใช้ลบปลั๊กอิน:

// 插件卸载时清理选项
function mfgp_uninstall_hook() {
    delete_option( 'mfgp_custom_message' );
}
register_uninstall_hook( __FILE__, 'mfgp_uninstall_hook' );

สรุป

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

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

Plugin ต้องวางไว้ในไดเรกทอรีใด?

ปลั๊กอิน WordPress ต้องวางไว้ในไดเรกทอรี wp-content/plugins/ ของเว็บไซต์ ปลั๊กอินแต่ละตัวอาจเป็นไฟล์ PHP แยกไฟล์เดียว แต่โดยทั่วไปมักเป็นโฟลเดอร์ที่ตั้งชื่อตามปลั๊กอิน ซึ่งภายในประกอบด้วยไฟล์หลักและทรัพยากรอื่นๆ

ทำไมปลั๊กอินของฉันจึงไม่แสดงในรายการหลังบ้าน?

โปรดตรวจสอบความถูกต้องและความสมบูรณ์ของรูปแบบความคิดเห็นส่วนหัวในไฟล์ปลั๊กอินหลัก (Plugin Name, Description เป็นต้น) ตรวจสอบให้แน่ใจว่าไฟล์อยู่ในไดเรกทอรีที่ถูกต้อง และ WordPress มีสิทธิ์อ่านไฟล์นั้น นอกจากนี้ ตรวจสอบว่าไม่มีช่องว่างหรืออักขระส่วนเกินที่จุดเริ่มต้นของโค้ด PHP

วิธีดีบั๊กข้อผิดพลาด PHP ในปลั๊กอิน?

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

ปลั๊กอินและไฟล์ functions.php ของธีมมีความแตกต่างกันอย่างไร?

ในไฟล์ functions.php ฟังก์ชันที่เพิ่มเข้ามาในธีมจะถูกผูกไว้กับธีมนั้น เมื่อเปลี่ยนธีม ฟังก์ชันเหล่านี้อาจใช้งานไม่ได้ ในขณะที่ฟังก์ชันที่ปลั๊กอินให้มานั้นทำงานอิสระจากธีม ไม่ว่าคุณจะใช้ธีมใด ตราบใดที่ปลั๊กอินถูกเปิดใช้งาน ฟังก์ชันก็จะใช้งานได้เสมอ สำหรับฟังก์ชันทั่วไป การพัฒนาปลั๊กอินเป็นตัวเลือกที่ดีกว่า

จะให้นักพัฒนาคนอื่นขยายปลั๊กอินของฉันได้อย่างไร

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