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

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

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

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

การเลือกและการกำหนดค่าสภาพแวดล้อมการพัฒนาท้องถิ่น

ขั้นตอนหลักที่สำคัญที่สุดคือการตั้งค่าเซิร์ฟเวอร์ท้องถิ่นที่รวม PHP, MySQL และ Apache/Nginx คุณสามารถเลือกMAMPXAMPPซอฟต์แวร์ชุดรวมดังกล่าว ซึ่งให้วิธีการติดตั้งที่สะดวกสำหรับ Windows และ macOS สำหรับผู้ใช้ระดับสูง การใช้Dockerการทำให้สภาพแวดล้อมการพัฒนาของคุณเป็นแบบ Containerized เป็นแนวทางปฏิบัติที่ดีที่สุดในปัจจุบัน ซึ่งช่วยให้มั่นใจได้ว่าสภาพแวดล้อมมีความสม่ำเสมอและทำซ้ำได้ง่าย ไม่ว่าคุณจะเลือกวิธีใด โปรดตรวจสอบให้แน่ใจว่าเวอร์ชัน PHP ของคุณเข้ากันได้กับเวอร์ชันหลักที่ปลั๊กอินคาดหวังให้ทำงาน (เช่น PHP 7.4 ขึ้นไป) และเปิดใช้งานส่วนขยาย PHP ที่จำเป็น เช่น MySQLi หรือ PDO

ติดตั้งและกำหนดค่า WordPress

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

แนะนำให้อ่าน การพัฒนา WordPress Theme สำหรับผู้เริ่มต้น: สร้างธีมที่กำหนดเองชิ้นแรกของคุณตั้งแต่เริ่มต้น

เครื่องมือพัฒนาที่จำเป็นแนะนำ

การพัฒนาอย่างมีประสิทธิภาพขาดไม่ได้ซึ่งเครื่องมือที่เหมาะสม ก่อนอื่นคุณต้องมีโปรแกรมแก้ไขโค้ด เช่นVisual Studio Codeซึ่งฟรีและทรงพลัง ติดตั้งปลั๊กอินสำหรับ PHP, WordPress และการรับรู้โค้ดอัจฉริยะ เครื่องมือควบคุมเวอร์ชันGitเป็นเครื่องมือที่จำเป็นสำหรับการจัดการการเปลี่ยนแปลงโค้ดและย้อนดูประวัติ เครื่องมือนักพัฒนาของเบราว์เซอร์ (Chrome DevTools หรือ Firefox Developer Edition) สำคัญอย่างยิ่งสำหรับการดีบั๊กด้านฟรอนท์เอนด์ สุดท้าย พิจารณาติดตั้งเครื่องมือตรวจสอบคุณภาพโค้ด เช่นPHP_CodeSnifferจับคู่กับWordPress-Coding-Standardsชุดกฎ ซึ่งจะช่วยให้คุณปฏิบัติตามมาตรฐานการเข้ารหัสอย่างเป็นทางการของ WordPress

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

โครงสร้างพื้นฐานของปลั๊กอินและไฟล์หลัก

ปลั๊กอิน WordPress มาตรฐานมีโครงสร้างไดเรกทอรีและไฟล์เฉพาะ การปฏิบัติตามข้อกำหนดเหล่านี้เป็นพื้นฐานที่ระบบจะจดจำและจัดการปลั๊กอินได้อย่างมีประสิทธิภาพ

องค์ประกอบพื้นฐานและหน้าที่ของไฟล์หลัก

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

<?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;
}

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

เพิ่มโค้ดหลักสำหรับฟังก์ชันการทำงานให้กับปลั๊กอิน

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

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

/**
 * 在管理后台顶部显示欢迎信息
 */
function myfp_display_admin_notice() {
    echo '<div class="notice notice-success is-dismissible"><p>ยินดีต้อนรับสู่ “ปลั๊กอินแรกของฉัน”!</p></div>';
}
add_action( 'admin_notices', 'myfp_display_admin_notice' );

เพื่อรักษาความเป็นระเบียบของโค้ดและหลีกเลี่ยงความขัดแย้งในการตั้งชื่อ ควรใช้คำนำหน้าที่ไม่ซ้ำกันสำหรับชื่อฟังก์ชันและคลาสทั้งหมด เช่น ที่นี่คือmyfp_(ย่อมาจาก My First Plugin)

มาตรฐานการจัดระเบียบไดเรกทอรีปลั๊กอินและไฟล์ทรัพยากร

ปลั๊กอินที่มีความซับซ้อนมากขึ้นมักประกอบด้วยหลายไฟล์ โครงสร้างไดเรกทอรีที่เหมาะสมสามารถเพิ่มความสามารถในการบำรุงรักษาได้อย่างมาก วิธีจัดระเบียบทั่วไปมีดังนี้:
- /assets/: เก็บทรัพยากรสถิตย์เช่น CSS, JavaScript, รูปภาพ และฟอนต์
- /includes/: เก็บไฟล์คลาส PHP หลักและไฟล์ฟังก์ชันการทำงาน
- /admin/: เก็บไฟล์ PHP, CSS และ JS ที่เกี่ยวข้องเฉพาะกับส่วนหลังของแอดมิน
- /public/: เก็บไฟล์ที่เกี่ยวข้องกับส่วนหน้าของเว็บไซต์
- /languages/: เก็บไฟล์แปลสากล (.po, .mo)

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

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

กลไกฮุคเพื่อโต้ตอบกับ API หลัก

จิตวิญญาณของการพัฒนา WordPress Plugin อยู่ที่กลไก “Hook” ซึ่งช่วยให้โค้ดของคุณสามารถแทรกและทำงานในช่วงเวลาที่กำหนดในส่วนหลัก, ธีม หรือปลั๊กอินอื่นๆ

ทำความเข้าใจกับ Action Hooks และ Filter Hooks

Hook แบ่งออกเป็นสองประเภทหลัก: Action และ Filter Action Hook ใช้สำหรับรันโค้ดของคุณเมื่อเหตุการณ์เฉพาะเกิดขึ้น เช่น หลังจากเผยแพร่โพสต์ ก่อนโหลดหน้าเว็บ มันไม่ส่งคืนค่าใดๆ แค่ “ทำ” บางสิ่ง ฟังก์ชันหลักที่ใช้คือadd_action()do_action()Filter Hook ใช้สำหรับปรับเปลี่ยนข้อมูล ก่อนที่ข้อมูลจะถูกใช้, บันทึก หรือแสดงผล คุณสามารถดักจับและปรับเปลี่ยนได้ มันต้องส่งคืนค่า ฟังก์ชันหลักที่ใช้คือadd_filter()apply_filters()

ติดตั้งฟังก์ชันที่กำหนดเองลงบน Hook มาตรฐาน

WordPress คอร์มีฮุคมาตรฐานหลายร้อยตัว ตัวอย่างเช่น คุณสามารถเพิ่มข้อความลิขสิทธิ์อัตโนมัติที่ส่วนท้ายของเนื้อหาโพสต์ ซึ่งเกี่ยวข้องกับการใช้ทั้งแอ็กชันและฟิลเตอร์:

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

// 使用过滤器修改文章内容
function myfp_add_copyright_to_content( $content ) {
    if ( is_single() ) {
        $copyright_text = '<p><em>โปรดระบุแหล่งที่มา</em></p>';
        $content .= $copyright_text;
    }
    return $content;
}
add_filter( 'the_content', 'myfp_add_copyright_to_content' );

// 使用动作在文章保存时执行操作
function myfp_log_post_publish( $post_id ) {
    // 记录日志或执行其他后处理
    error_log( "文章 ID {$post_id} 已发布。" );
}
add_action( 'publish_post', 'myfp_log_post_publish' );

สร้างและจัดเตรียมฮุคที่กำหนดเองสำหรับส่วนขยาย

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

// 定义一个自定义动作钩子
function myfp_process_data() {
    $data = '一些初始数据';
    // 其他开发者可以通过 ‘myfp_before_action’ 在此处插入代码
    do_action( 'myfp_before_action', $data );

// 插件的主要处理逻辑...

// 其他开发者可以通过 ‘myfp_after_action’ 在此处插入代码
    do_action( 'myfp_after_action', $data );
}

// 定义一个自定义过滤器钩子
function myfp_get_output() {
    $output = '默认输出';
    // 允许其他开发者过滤最终的输出
    return apply_filters( 'myfp_filter_output', $output );
}

สร้างอินเทอร์เฟซการจัดการปลั๊กอินและตัวเลือกการตั้งค่า

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

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

จัดการตัวเลือกอย่างปลอดภัยด้วย Settings API

WordPress Settings API เป็นเฟรมเวิร์กที่ปลอดภัยสำหรับจัดการฟอร์ม ตรวจสอบความถูกต้อง จัดเก็บ และแสดงข้อมูลตัวเลือกอีกครั้ง มันจัดการฟิลด์ความปลอดภัย nonce และการตรวจสอบสิทธิ์โดยอัตโนมัติ ขั้นตอนพื้นฐานในการสร้างหน้าตั้งค่าประกอบด้วย: 1) ลงทะเบียนการตั้งค่า 2) เพิ่มส่วนการตั้งค่า 3) เพิ่มฟิลด์ รหัสต่อไปนี้สาธิตวิธีการลงทะเบียนการตั้งค่าอย่างง่าย:

function myfp_register_settings() {
    register_setting(
        'myfp_settings_group', // 选项组名
        'myfp_option_name',    // 选项名(存储在wp_options表中)
        array( 'sanitize_callback' => 'myfp_sanitize_callback' ) // 消毒回调函数
    );

add_settings_section(
        'myfp_settings_section', // 区块ID
        '基本设置',               // 区块标题
        'myfp_section_callback', // 区块回调函数(可输出描述)
        'myfp-settings-page'     // 设置页面Slug
    );

add_settings_field(
        'myfp_text_field',      // 字段ID
        '示例文本输入',         // 字段标签
        'myfp_text_field_callback', // 字段回调函数(输出HTML表单域)
        'myfp-settings-page',   // 页面Slug
        'myfp_settings_section' // 所属区块ID
    );
}
add_action( 'admin_init', 'myfp_register_settings' );

สร้างเมนูและหน้าเมนูย่อยในตำแหน่งต่างๆ

คุณต้องเพิ่มลิงก์หน้าตั้งค่าไปยังเมนูการจัดการ WordPress โดยใช้add_menu_page()สามารถสร้างเมนูระดับบนสุดได้ ใช้add_submenu_page()สามารถสร้างเมนูย่อยได้

function myfp_add_admin_menu() {
    // 添加顶级菜单
    add_menu_page(
        '我的插件设置',        // 页面标题
        '我的插件',            // 菜单标题
        'manage_options',     // 权限能力
        'myfp-settings-page', // 菜单Slug
        'myfp_render_settings_page', // 渲染页面的回调函数
        'dashicons-admin-generic', // 图标(可选)
        80                    // 菜单位置
    );

// 添加子菜单(指向同一个页面,但菜单标题不同)
    add_submenu_page(
        'myfp-settings-page', // 父菜单Slug
        '关于此插件',         // 页面标题
        '关于',              // 菜单标题
        'manage_options',    // 权限能力
        'myfp-about-page',   // 菜单Slug
        'myfp_render_about_page' // 渲染回调
    );
}
add_action( 'admin_menu', 'myfp_add_admin_menu' );

ฟังก์ชันเรียกกลับสำหรับการแสดงผลหน้าตั้งค่าแบบกำหนดเอง

myfp_render_settings_pageฟังก์ชัน callback มีหน้าที่ในการแสดงโครงสร้าง HTML ของหน้าการตั้งค่า ในฟังก์ชันนี้ คุณจำเป็นต้องเรียกใช้settings_fields()do_settings_sections()เพื่อแสดงฟิลด์ที่ลงทะเบียนผ่าน Settings API

function myfp_render_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
            settings_fields( 'myfp_settings_group' );
            do_settings_sections( 'myfp-settings-page' );
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="th"/></form>
    </div>
    &lt;?php
}

สรุป

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

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

### การพัฒนา WordPress Plugin ต้องการพื้นฐานการเขียนโปรแกรมอะไรบ้าง?
การพัฒนา WordPress Plugin ส่วนใหญ่จำเป็นต้องมีความรู้พื้นฐานเกี่ยวกับภาษาโปรแกรม PHP รวมถึงไวยากรณ์ ฟังก์ชัน อาร์เรย์ และแนวคิดการเขียนโปรแกรมเชิงวัตถุ ในเวลาเดียวกัน การมีความเข้าใจพื้นฐานเกี่ยวกับเทคโนโลยี front-end เช่น HTML, CSS และ JavaScript จะเป็นประโยชน์อย่างมากสำหรับการพัฒนา plugin ที่มีส่วนต่อประสานผู้ใช้ การคุ้นเคยกับการทำงานพื้นฐานของฐานข้อมูล MySQL ก็มีประโยชน์เช่นกัน เนื่องจาก WordPress พึ่งพาฐานข้อมูลอย่างมาก

วิธีการดีบั๊ก WordPress ปลั๊กอินที่กำลังพัฒนาอยู่?

การดีบั๊ก plugin มีหลายวิธี ขั้นแรก ในwp-config.phpเปิดในไฟล์WP_DEBUGWP_DEBUG_LOGซึ่งจะบันทึกข้อผิดพลาดและคำเตือน PHP ลงใน/wp-content/debug.logไฟล์ โดยไม่แสดงให้ผู้ใช้ front-end เห็น ประการที่สอง ใช้เครื่องมือนักพัฒนาของเบราว์เซอร์ (เช่น Chrome DevTools) เพื่อดีบั๊ก JavaScript และคำขอเครือข่าย สำหรับตรรกะที่ซับซ้อน สามารถใช้var_dump()error_log()ฟังก์ชันส่งออกค่าตัวแปรไปยังบันทึกหรือหน้าเว็บ นอกจากนี้ การติดตั้งตัวดีบัก PHP เชิงมืออาชีพ เช่น Xdebug และการผสานรวมกับโปรแกรมแก้ไขโค้ดของคุณ สามารถทำการดีบักแบบเบรกพอยต์ได้ ซึ่งเป็นวิธีดีบักที่มีประสิทธิภาพสูงสุด

ปลั๊กอินของฉันจะใช้งานหลายภาษา (สากล) ได้อย่างไร

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

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

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