Memperkenalkan pembangunan plugin: Membina ekstensi pertama anda dari awal.

Bacaan 3 minit
2026-03-11
2026-06-04
2,124
Saya mendapat komisen apabila anda membeli-belah melalui pautan di bawah, tanpa sebarang kos tambahan kepada anda.

Memperkenalkan pembangunan plugin: Membina ekstensi pertama anda dari awal.

Daya tarikan utama WordPress terletak pada kebolehannya yang sangat luas untuk diperluas (extensibility). Dengan mengembangkan plugin khusus, pembangun dapat menambahkan sebarang fungsi yang diperlukan ke laman web dengan mudah, tanpa perlu mengubah kod asas, yang memastikan keselamatan dan kemudahan semasa melakukan kemas kini. Panduan ini akan membimbing anda untuk memahami proses asas, spesifikasi arkitektur, dan amalan terbaik dalam pembangunan plugin WordPress secara sistematik.

Asas utama dalam pembangunan plugin

Sebelum mula menulis kod, adalah sangat penting untuk memahami konsep asas dan struktur standard plugin WordPress. Sebuah plugin pada dasarnya terdiri daripada satu atau lebih fail PHP yang dibungkus dalam sebuah direktori, dan ia mengandungi sebuah fail notis kepala (header comment) yang khusus.

Standard untuk fail utama plugin

Setiap plugin mesti mempunyai satu fail PHP utama. Fail ini perlu mengandungi kepala maklumat plugin yang standard, supaya WordPress dapat mengenalinya dan mengurusnya. Maklumat kepala ini terdapat dalam bentuk blok ulasan (comments) yang khusus. Sebagai contoh, sebuah plugin yang bernama… my-first-plugin.php Fail tersebut mungkin mengandungi kandungan berikut:

Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan permulaan untuk pembangunan tema WordPress: Membina tema pertama anda dari awal.

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于演示的 WordPress 插件。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Maklumat ini akan dipaparkan terus di halaman pengurusan “Plugin” di panel pentadbiran WordPress. Di antaranya,Text DomainDomain Path Digunakan untuk pengekstrakan data (i18n) agar plugin dapat menyokong pelbagai bahasa.

UltaHost – Penyedia Hosting untuk WordPress
Jaminan pemulangan wang dalam tempoh 30 hari, lebar jalur dan pangkalan data yang tidak terhad, perlindungan DDoS percuma, diskaun 50% untuk pembelian selama 3 tahun.

Direktori Plugin dan Organisasi Fail

Sebuah direktori plugin yang teratur dan baik strukturnya bukan sahaja memudahkan proses pembangunan dan penyelenggaraan, tetapi juga memudahkan pengguna untuk memahaminya. Berikut adalah cara pengaturan yang disyorkan:

/my-first-plugin/
├── my-first-plugin.php      // 主文件
├── uninstall.php            // 卸载清理脚本
├── includes/                // 核心功能类与函数
│   ├── class-core.php
│   └── functions.php
├── admin/                   // 后台相关文件
│   ├── css/
│   ├── js/
│   └── class-admin.php
├── public/                  // 前台相关文件
│   ├── css/
│   ├── js/
│   └── class-public.php
├── assets/                  // 静态资源(图片等)
└── languages/               // 翻译文件(.po, .mo)

Struktur terpisah ini memisahkan logik belakang (backend), logik depan (frontend) dan sumber bersama (common resources) dengan jelas, yang selaras dengan amalan terbaik dalam pembangunan WordPress.

Menggunakan hook dan filter untuk memperluas fungsi

API plugin untuk WordPress dibina berdasarkan konsep “hook” (tangkai), yang merupakan teras kepada arsitektur berbasis acara (event-driven)nya. Terdapat dua jenis hook: action (tindakan) dan filter (penapis). Memahami dan menggunakannya dengan mahir adalah kunci dalam pembangunan plugin.

Penggunaan Hook Aksi (Action Hooks)

Action hooks membenarkan anda menambahkan kod khusus pada masa-masa tertentu semasa WordPress dijalankan. Sebagai contoh, apabila sebuah artikel diterbitkan, atau apabila menu pentadbiran dimulakan. Anda boleh menggunakannya untuk melakukan tindakan tertentu, seperti menghantar notifikasi, mengubah pengaturan, atau melakukan proses lain yang diperlukan. add_action() Fungsi tersebut akan “memuatkan” (mount) fungsi anda ke pada titik-titik pengaitan (hooks) yang ditentukan.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan Teknikal Pembinaan Laman Web: Analisis Seluruh Proses Dari Perancangan Hingga Pelancaran.

Berikut adalah contoh yang mudah: menambahkan baris teks khusus di bahagian kaki (footer) laman web. Pertama, kita mencipta sebuah fungsi dalam fail plugin utama, kemudian mengaitkannya (mengmount) fungsi tersebut dengan komponen yang sesuai di laman web. wp_footer Ini tergantung pada tindakan yang dilakukan pada “hook” tersebut.

Fungsi myplugin_add_footer_text() {
    echo '<p style="text-align:center;">Terima kasih kerana menggunakan plugin ini!</p>';
}
add_action( 'wp_footer', 'myplugin_add_footer_text' );

Apabila WordPress menjalankan prosesnya… wp_footer Apabila berada di lokasi tersebut (biasanya dalam konteks topik yang berkaitan)... footer.php Apabila fungsi tersebut dipanggil (dalam kod), fungsi yang kita tambahkan akan dijalankan.

Penggunaan filter hooks

Hook filter digunakan untuk mengubah data yang dihantar dalam proses. Ia membenarkan anda untuk menangkap, memeriksa, dan mengubah sebuah variabel sebelum ia digunakan oleh WordPress atau plugin lain. add_filter() Fungsi ini digunakan untuk mengaplikasikan penapis (filter).

hosting.com Hosting Bersama
Prestasi tinggi, menampilkan CPU AMD EPYC, storan SSD NVMe dan LiteSpeed, dengan sokongan pakar dalaman 24/7, langkah keselamatan canggih termasuk SSL, perlindungan serangan paksa kata laluan, perisian hasad dan DDoS, menjimatkan sehingga 73%.

Sebagai contoh, untuk mengubah output laluan bagi tajuk artikel, kita boleh menambahkan prefiks tertentu di hadapan setiap tajuk. Kita akan memuatkan fungsi tersebut (function) untuk melakukan tindakan ini. the_title Ini tergantung pada penapis tersebut.

function myplugin_prefix_post_title( $title, $id = null ) {
    // 确保只在主循环且在非管理后台时添加前缀
    if ( ! is_admin() && in_the_loop() ) {
        $title = '[推荐] ' . $title;
    }
    return $title;
}
add_filter( 'the_title', 'myplugin_prefix_post_title', 10, 2 );

Parameter di sini 10 Ia merupakan keutamaan (semakin kecil nombor tersebut, semakin awal ia akan dijalankan).2 Ini menunjukkan bahawa fungsi kita menerima dua parameter.$title$idFungsi penapis mesti mengembalikan nilai yang telah diubah suai.

Create a plugin management page.

Banyak plugin memerlukan pilihan konfigurasi yang disediakan di bahagian belakang (backend) WordPress. Ini biasanya dilakukan dengan menambahkan halaman-halaman tertentu ke dalam menu pentadbiran. WordPress menyediakan pelbagai fungsi untuk membuat menu utama, sub-menu, dan halaman pilihan (option pages).

Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan lengkap: Mengubah suai templat halaman produk WooCommerce untuk meningkatkan kadar penukaran jualan

Tambah menu pengurusan tahap atas

Anda boleh menggunakan add_menu_page() Fungsi ini mencipta satu item menu latar belakang yang berasingan untuk plugin anda. Fungsi tersebut memerlukan beberapa parameter untuk mendefinisikan tajuk halaman, nama menu, kebenaran akses, pengekod unik, fungsi panggilan balik (callback function), dan lain-lain.

Kod di bawah menunjukkan cara untuk menambahkan halaman menu utama yang ringkas, dan memastikan ia hanya dipaparkan apabila pentadbir mengaksesnya.

Hosting Bersama InterServer
Hosting kongsi: 1TB/bulan pada $2.50 USD, bulan pertama pada $0.10 USD dengan kod promo tryinterserver. 461 skrip aplikasi awan tersedia untuk pemasangan satu klik.
function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',          // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',       // 权限能力(通常为管理员)
        'myplugin-settings',    // 菜单 Slug
        'myplugin_settings_page', // 显示页面内容的回调函数
        'dashicons-admin-generic', // 图标(使用 Dashicons)
        30                      // 菜单位置
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// 定义设置页面的内容
function myplugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
        <form action="/ms/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            settings_fields( 'myplugin_options' ); // 输出安全字段
            do_settings_sections( 'myplugin-settings' ); // 输出设置区块
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="ms"/></form>
    </div>
    &lt;?php
}

Di sini,myplugin_settings_page Fungsi tersebut bertanggungjawab untuk merender kandungan HTML halaman web. Dalam projek sebenar, anda akan menggabungkan pengaturan WordPress dengan API (Application Programming Interface) untuk melaksanakan tugas-tugas tertentu.register_setting, add_settings_section, add_settings_fieldUntuk membuat borang yang boleh disimpan, gunakan alat yang sesuai.

Membina borang dan menyimpan tetapan

Untuk mengendalikan input pengguna dengan selamat dan teratur, anda perlu menggunakan API yang disediakan oleh WordPress. API ini bertanggungjawab untuk proses pengesahan data (bukan melalui mekanisme CES), pemeriksaan kualiti data, dan penyimpanan data dalam pangkalan data. Langkah pertama adalah mendaftar pilihan tetapan (setting option) yang berkaitan, kemudian menambahkan bidang-bidang data yang diperlukan untuk pengesahan tersebut.

Contoh berikut menunjukkan cara mendaftar sebuah bidang teks (text field) dan menyimpan nilainya.

function myplugin_settings_init() {
    register_setting(
        'myplugin_options', // 选项组名
        'myplugin_api_key', // 选项名(存储在 wp_options 表中)
        array(
            'type' => 'string',
            'sanitize_callback' => 'sanitize_text_field', // 数据清理回调
            'default' => ''
        )
    );

    add_settings_section(
        'myplugin_section_main',
        '主要设置',
        null,
        'myplugin-settings'
    );

    add_settings_field(
        'myplugin_field_api',
        'API 密钥',
        'myplugin_field_api_cb',
        'myplugin-settings',
        'myplugin_section_main',
        array( 'label_for' => 'myplugin_api_key' )
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

function myplugin_field_api_cb() {
    $value = get_option( 'myplugin_api_key', '' );
    echo '<input type="text" id="myplugin_api_key" name="myplugin_api_key" value="' . esc_attr( $value ) . '" class="regular-text">';
}

Dengan cara ini, data yang dihantar melalui borang akan melalui proses pemprosesan tertentu sebelum disimpan atau digunakan. sanitize_text_field Fungsi pembersihan, kemudian disimpan secara automatik ke dalam pangkalan data. wp_options Dalam jadual tersebut, nama kunci adalah… myplugin_api_key

Pastikan keselamatan dan prestasi plugin tersebut.

Semasa mengembangkan plugin, keselamatan dan prestasi merupakan pertimbangan utama yang tidak boleh diabaikan. Sebuah plugin yang tidak selamat boleh menjadi sumber kelemahan bagi seluruh laman web WordPress.

Pemverian Data dan Penyisihan (Data Validation and Escaping)

Jangan pernah percaya pada input pengguna. Semua data yang datang dari luar (seperti borang, URL, pangkalan data) mesti disahkan (Validation), dibersihkan (Sanitization), dan dielakkan daripada kesilapan penggunaan (Escaping) sebelum dihasilkan atau digunakan.

  • Pengesahan: Memeriksa sama ada data memenuhi format yang dijangka (seperti sama ada ia merupakan alamat e-mel atau nombor).
  • Pembersihan: Menghapuskan aksara atau kandungan yang tidak dibenarkan daripada data (seperti menghapuskan tag HTML).
  • Escape: Proses mengenkodkan data semasa mengeluarkannya ke dalam HTML, JavaScript, atau URL untuk mencegah serangan skrip merentas tapak (cross-site scripting attacks).

WordPress menyediakan sebilangan besar fungsi bantu, seperti:
* sanitize_text_field(): Bersihkan rentetan teks.
* esc_html(): Menyandarkan output HTML.
* esc_url(): URL yang disandikan (escaped URL).
* wp_kses_post()Tag HTML dibenarkan untuk digunakan melalui penapis kandungan artikel.

Pemuatan skrip dan gaya yang betul

Untuk tidak mempengaruhi kelajuan muat turun halaman dan mengelakkan konflik, fail JavaScript dan CSS mesti didaftarkan serta dimuat turun dengan betul menggunakan kaedah yang disediakan oleh WordPress. wp_enqueue_script()wp_enqueue_style() Fungsi.

Kod di bawah menunjukkan cara untuk memuatkan fail JS dan CSS khusus hanya pada halaman pengurusan plugin itu sendiri.

function myplugin_load_admin_assets( $hook ) {
    // 只在我们插件的设置页加载
    if ( $hook != 'toplevel_page_myplugin-settings' ) {
        return;
    }
    wp_enqueue_style(
        'myplugin-admin-css',
        plugins_url( 'admin/css/style.css', __FILE__ ),
        array(),
        '1.0.0'
    );
    wp_enqueue_script(
        'myplugin-admin-js',
        plugins_url( 'admin/js/script.js', __FILE__ ),
        array( 'jquery' ), // 声明依赖 jQuery
        '1.0.0',
        true // 在页脚加载
    );
}
add_action( 'admin_enqueue_scripts', 'myplugin_load_admin_assets' );

Cara ini memastikan bahawa sumber hanya dimuat turun apabila diperlukan, dan hubungan kebergantungan (seperti jQuery) diurus dengan betul. Selain itu, parameter nombor versi membantu dalam menguruskan cache pelayar.

RINGKASAN

Pembangunan plugin untuk WordPress merupakan sebuah proses yang sistematik, yang bermula dengan pematuhan terhadap struktur fail standard dan header maklumat. Intipati utamanya adalah penggunaan yang mahir terhadap mekanisme “action” dan “filter hook” untuk menyepadukan fungsi tambahan ke dalam kitaran hidup (lifecycle) WordPress secara tidak invasif. Mencipta antara muka pengurusan backend yang jelas untuk plugin, serta mematuhi sepenuhnya API pengaturan (settings API), dapat meningkatkan pengalaman pengguna dan keselamatan data dengan ketara. Akhir sekali, menganggap aspek keselamatan (pemeriksaan, pembersihan, pengekstrakan karakter berbahaya) dan prestasi (memuatkan sumber secara berdasarkan keperluan) sebagai prinsip utama dalam pembangunan, merupakan cara yang pasti untuk mencipta plugin yang berkualiti tinggi dan boleh dipercayai. Dengan mengikuti langkah-langkah dan amalan terbaik ini, anda akan dapat membuat tambahan (extension) untuk WordPress yang berkuasa, selamat, dan mudah diselenggara.

FAQ - Soalan Lazim

Apa kemahiran asas yang diperlukan untuk membangunkan plugin WordPress?

Untuk mengembangkan plugin WordPress, anda perlu mahir dalam bahasa pemrograman PHP, kerana plugin tersebut terutamanya dibina menggunakan kod PHP. Selain itu, anda juga perlu mempunyai pengetahuan asas tentang HTML, CSS, dan JavaScript untuk membina antara muka pengguna (front-end) dan interaksi yang diperlukan. Yang paling penting, anda perlu memahami struktur asas WordPress, terutamanya sistem hook (actions dan filters), hierarki templat tema, serta operasi pangkalan data (melalui…). WP_Querywpdb (Kelas).

Bagaimana untuk membaiki (debug) plugin WordPress yang sedang dalam proses pembangunan?

The most effective method is to… wp-config.php Aktifkan mod pembangunan (debug mode) untuk WordPress dalam fail tersebut. WP_DEBUG Konstanta ditetapkan kepada trueIni akan menunjukkan ralat PHP, amaran, dan notis pada halaman web. Anda juga boleh menggunakan… error_log() Fungsi tersebut akan merekod maklumat pembetulan (debugging) yang disesuaikan ke dalam log ralat (error log) pelayan. Untuk pembetulan yang lebih kompleks, anda boleh mempertimbangkan untuk menggunakan alat pembetulan PHP yang khusus, seperti Xdebug.

Bagaimanakah plugin sepatutnya mengendalikan operasi pangkalan data?

Untuk penyimpanan data yang mudah, disyorkan menggunakan API pilihan (Options API) WordPress.add_option, get_option, update_optionIa digunakan untuk menyimpan data berbentuk pasangan kunci-nilai. Bagi data berstruktur yang memerlukan struktur tabel yang disesuaikan, anda boleh menggunakannya ketika plugin diaktifkan. dbDelta() Fungsi ini digunakan untuk membuat atau mengemas kini struktur jadual dengan selamat, dan ia memerlukan pematuhan terhadap format SQL yang tertentu. Pastikan anda menggunakan fungsi tersebut dengan betul. $wpdb Objek global melakukan semua pertanyaan pangkalan data, dan menggunakan kaedah `prepare`nya untuk mencegah serangan penyisipan kod SQL (SQL injection attacks).

Bagaimana untuk menjadikan plugin saya menyokong pelbagai bahasa (internationalization)?

WordPress menggunakan rangka kerja GNU gettext untuk melaksanakan fungsi internasionalisasi (penggunaan bahasa yang berbeza). Anda perlu menetapkan pengaturan yang betul dalam bahagian kepala fail utama (header) bagi plugin tersebut. Text DomainDomain PathDalam kod, gantilah semua rentetan yang perlu diterjemahkan dengan… __()(untuk nilai pulangan) atau _e()(Digunakan untuk membungkus fungsi terjemahan secara langsung.) Kemudian, gunakan alat seperti Poedit untuk memindai kod sumber dan menjana terjemahan yang diperlukan. .pot Fail templat, dan berdasarkan ini, cipta versi dalam pelbagai bahasa. .po.mo Terjemahkan fail tersebut dan letakkannya di tempat yang ditentukan. Domain Path Dalam direktori tersebut.

Setelah pembangunan selesai, bagaimanakah saya boleh mengeluarkan plugin saya ke direktori rasmi?

Pertama sekali, pastikan bahawa plugin anda sepenuhnya mematuhi Panduan Pembangunan Plugin rasmi dan keperluan penghantaran, termasuk standard kod, keselamatan, perjanjian lesen (mesti serasi dengan GPL), dan sebagainya. Kemudian, buat akaun di WordPress.org dan permohonan untuk menghantar plugin anda. Setelah diluluskan, anda boleh menggunakan Subversion untuk menghantar kod plugin ke repositori kod yang ditetapkan oleh pihak rasmi. Selepas penghantaran, anda perlu mengisi halaman deskripsi plugin, termasuk banner, ikon, tangkapan skrin, dan penjelasan terperinci, supaya pengguna dapat melihat dan memuat turunnya.