Panduan Lengkap Pembangunan Plugin WordPress – Membina Plugin Tambahan Profesional dari Kosong

Bacaan 3 minit
2026-03-16
2026-06-03
1,909
Saya mendapat komisen apabila anda membeli-belah melalui pautan di bawah, tanpa sebarang kos tambahan kepada anda.

Asas Plugin WordPress dan Persekitaran Pembangunan

Untuk mengembangkan plugin WordPress, pertama-tama anda perlu memahami apa sebenarnya sebuah plugin. Sebuah plugin pada dasarnya adalah satu atau lebih fail PHP yang mengandungi ulasan kepala (header comments) dalam format tertentu, yang digunakan untuk mengenal pastikan fungsi plugin tersebut kepada WordPress. Plugin tersebut berfungsi untuk memperluas atau mengubahsuaikan ciri-ciri asas WordPress melalui API yang disediakan oleh WordPress, seperti hook tindakan (action hooks), penapis (filters), fungsi pangkalan data (database functions), dan sebagainya, tanpa perlu membuat perubahan pada kod asas WordPress itu sendiri.

Untuk memulakan pembangunan, anda memerlukan sebuah persekitaran pembangunan setempat (local development environment). Ini biasanya termasuk sebuah pelayan setempat (seperti XAMPP, MAMP, atau Local by Flywheel), PHP (versi yang sesuai dengan keperluan WordPress), pangkalan data MySQL, dan sebuah editor kod (seperti VS Code atauPhpStorm). Ia sangat disyorkan untuk melakukan pembangunan dan penyelidikan (debugging) dalam persekitaran setempat untuk mengelakkan kesan negatif terhadap laman web yang berada dalam talian.

Struktur fail asas untuk plugin

Satu plugin yang paling ringkas boleh terdiri daripada hanya satu fail. Namun, untuk menjadikan kod lebih jelas dan mudah diselenggara, adalah disyorkan untuk mengikuti struktur tertentu. Direktori plugin yang tipikal mungkin mengandungi: fail plugin utama (contohnya…your-plugin-name.php), satuincludesFolder (untuk menyimpan kelas atau fungsi-fungsi fungsi utama), satuadminFolder (untuk menyimpan kod berkaitan bahagian belakang aplikasi), satupublicFolder (untuk menyimpan kod berkaitan bahagian hadapan aplikasi), satuassetsFolder (untuk menyimpan JavaScript, CSS, dan gambar), serta folder bahasa dan template yang boleh dipilih (optional).

Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan Lengkap Pembangunan Plugin WordPress: Daripada Asas Hingga Teknik Tinggi

Fail plugin utama merupakan titik masuk untuk plugin tersebut, dan ulasan (comments) di bahagian atas fail tersebut sangat penting. WordPress membaca ulasan-ulasan ini untuk menampilkan maklumat tentang plugin tersebut di panel pentadbiran.

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.

Mencipta plugin pertama anda

Mari kita mulakan dengan contoh klasik “Hello World”, yang akan membantu anda mengenali proses asas dan piawaian pembuatan plugin.

Menulis fail plugin utama

Pertama, di direktori di mana WordPress anda dipasang,wp-content/pluginsDalam folder tersebut, buatlah sebuah folder baru, sebagai contoh…my-first-pluginDalam folder tersebut, buat sebuah fail PHP dengan namamy-first-plugin.php

Buka fail ini dan masukkan kod berikut. Bahagian maklumat plugin (Plugin Header) di awal adalah penting, kerana ia memberitahu WordPress bahawa ini adalah sebuah plugin.

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个学习插件开发的示例插件,它将在文章内容顶部显示“Hello World!”。
 * 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;
}

/**
 * 在文章内容前添加“Hello World”
 *
 * @param string $content 原始文章内容。
 * @return string 修改后的文章内容。
 */
function mfp_add_hello_world( $content ) {
    if ( is_single() && in_the_loop() && is_main_query() ) {
        $custom_text = &#039;<p style="background-color:#f0f0f0; padding:10px;"><strong>Hello World! Ini adalah plugin pertama saya.</strong></p>';
        return $custom_text . $content;
    }
    return $content;
}
add_filter( 'the_content', 'mfp_add_hello_world' );

Setelah menyimpan fail tersebut, log masuk ke panel pentadbiran WordPress anda, kemudian ke halaman “Pembantu” (Plugins). Anda sepatutnya dapat melihat “My First Plugin” dalam senarai pembantu. Aktifkan plugin tersebut, kemudian kunjungi salah satu artikel di laman web anda. Anda akan melihat bahawa ayat “Hello World!” telah ditambahkan di bahagian atas kandungan artikel tersebut.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Pelajari cara membangunkan plugin WordPress dari awal, langkah demi langkah.

Mengerti elemen-elemen kunci dalam kod

Kod ini menunjukkan konsep asas dalam pembangunan WordPress: Filter (Penapis). Kita telah mendefinisikan sebuah fungsi.mfp_add_hello_worldIa menerima kandungan artikel.$contentSebagai parameter, dan kembalikan kandungan yang telah diubah suai. Kemudian, kita gunakannya…add_filter()Fungsi tersebut akan memuatkan fungsi khusus ini ke dalam inti (core) WordPress.the_contentIni terdapat pada pengait penapis tersebut. WordPress sedang melaksanakannya…the_content()Pada masa tersebut, semua fungsi yang dipasang pada “hook” ini akan dijalankan secara berurutan, membenarkan kita untuk mengubah kandungan output yang dihasilkan.

Keputusan syarat dalam kodis_single() && in_the_loop() && is_main_query()Ini adalah untuk memastikan bahawa perubahan yang kita buat hanya berkesan pada artikel tunggal dalam kueri utama, dan tidak mempengaruhi halaman senarai artikel atau bahagian lain. Ini merupakan amalan penting dalam penulisan plugin yang cekap dan tanpa kesan sampingan.

Teknologi Pembangunan Inti Plugin

Untuk mengembangkan plugin profesional yang berkuasa, anda mesti menguasai beberapa API teras yang disediakan oleh WordPress.

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%.

Menggunakan Action Hooks dan Filter Hooks

Hook adalah asas kepada arkitektur plugin WordPress. Terdapat dua jenis hook: Action dan Filter. Hook Action akan diaktifkan pada titik-titik tertentu semasa proses pelaksanaan (seperti semasa artikel diterbitkan atau apabila pentadbir log masuk ke panel kawalan), membenarkan anda untuk “melaksanakan” beberapa kod. Sebaliknya, hook Filter membenarkan anda untuk “mengubah” data (seperti kandungan artikel atau tajuk artikel) sebelum ia digunakan oleh WordPress.

Gunakanadd_action()Untuk melakukan tindakan pemasangan (mounting), sebagai contoh, mencipta jadual pangkalan data semasa plugin diaktifkan adalah keperluan yang biasa:

function mfp_create_custom_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'my_custom_data';
    $charset_collate = $wpdb->get_charset_collate();

$sql = "CREATE TABLE IF NOT EXISTS $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        data varchar(255) NOT NULL,
        created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
        PRIMARY KEY (id)
    ) $charset_collate;";

require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );
}
register_activation_hook( __FILE__, 'mfp_create_custom_table' );

Di sini telah digunakan…register_activation_hookIa merupakan fungsi pendaftaran khusus yang digunakan untuk menentukan tindakan yang perlu dilakukan semasa plugin diaktifkan.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Bermula dari kosong: Mengapa memilih pembangunan plugin WordPress?

Create a management menu and settings page.

Menyediakan halaman tetapan latar belakang untuk plugin anda adalah ciri khas bagi sebuah plugin yang profesional. Anda boleh membuat halaman pilihan (option page) dengan selamat dan secara teratur menggunakan API Tetapan (Settings API) WordPress.

Kod di bawah ini menunjukkan cara untuk menambahkan halaman menu anak di bawah menu utama “Setelan”:

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.
// 在管理后台初始化时添加菜单
add_action( 'admin_menu', 'mfp_add_admin_menu' );

function mfp_add_admin_menu() {
    add_options_page(
        '我的插件设置',          // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',        // 所需权限
        'my-plugin-settings',    // 菜单slug
        'mfp_render_settings_page' // 用于渲染页面的回调函数
    );
}

function mfp_render_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( 'mfp_settings_group' ); // 输出安全字段
            do_settings_sections( 'my-plugin-settings' ); // 输出设置区域
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="ms"/></form>
    </div>
    <?php
}

// 初始化设置
add_action( 'admin_init', 'mfp_settings_init' );

function mfp_settings_init() {
    register_setting( 'mfp_settings_group', 'mfp_options' ); // 注册一个设置选项组

add_settings_section(
        'mfp_section_basic',
        '基本设置',
        null,
        'my-plugin-settings'
    );

add_settings_field(
        'mfp_field_text',
        '示例文本框',
        'mfp_field_text_render',
        'my-plugin-settings',
        'mfp_section_basic'
    );
}

function mfp_field_text_render() {
    $options = get_option( 'mfp_options' );
    ?>
    <input type='text' name='mfp_options[text_field]' value='<?php echo esc_attr( $options['text_field'] ?? '' ); ?>'>
    <p class="description">Ini adalah sebuah kotak teks contoh.</p>
    &lt;?php
}

Keamanan plugin, penyesuaian untuk pelbagai bahasa (internationalization), dan persiapan untuk penerbitan (release preparation)

Plugin yang telah dibangunkan mesti melalui proses pengukuhan keselamatan, penyesuaian untuk penggunaan dalam pelbagai bahasa (internationalization), dan pengemasan yang betul sebelum boleh dikeluarkan untuk digunakan oleh umum.

Pemverian data, pengekstrakan (escaping) dan keselamatan

Jangan pernah percaya pada data yang dimasukkan oleh pengguna atau data dari luaran. Semua data yang diterima harus disemak dan disahkan dengan teliti sebelum digunakan.$_GET$_POST$_REQUESTData yang diperoleh daripada sumber tertentu, sama ada daripada sistem atau pangkalan data, mesti disahkan (validated) dan diubah suai (escaped) sebelum digunakan.

  • Pengesahan: Memeriksa sama ada data memenuhi format yang dijangka (seperti sama ada ia merupakan alamat e-mel, nombor, dsb.). Gunakan fungsi seperti…is_email()intval()sanitize_text_field()
  • Eskapisme: Semasa mengeksport data ke HTML, JavaScript atau URL, pastikan karakter khas ditangani dengan betul untuk mencegah serangan XSS. Gunakan fungsi sepertiesc_html()esc_js()esc_url()wp_kses_post()

Dalam kueri SQL, ia adalah wajib untuk menggunakan…$wpdb->prepare()Menggunakan kaedah tertentu untuk menyediakan parameter dapat mencegah serangan SQL injection.

Mengimplementasikan pengantarabangsaan plugin.

Internationalisasi (i18n) membolehkan plugin anda diterjemahkan ke dalam bahasa lain. Ini memerlukan dua langkah: menandakan ayat-ayat yang boleh diterjemahkan dan memuatkan kawasan teks yang berkaitan.

Pertama sekali, di bahagian atas fail plugin utama, ia telah didefinisikan.Text DomainDomain PathKemudian, di semua tempat di dalam plugin di mana terdapat rentetan teks yang perlu diterjemahkan, gunakan fungsi terjemahan untuk mengelilinginya. Contohnya:__('Hello World', 'my-first-plugin')Digunakan untuk memaparkan terjemahan dalam PHP.esc_html_e('Settings', 'my-first-plugin')Digunakan untuk mengelakkan masalah penguraian data dan untuk menunjukkan kandungan asal teks dengan jelas.

Semasa pemulaan plugin (contohnya, semasa digunakan)initTindakan tersebut memerlukan muat turun fail terjemahan:

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

Selepas itu, anda boleh menggunakan alat seperti Poedit untuk membuatnya..potFile-file templat, untuk digunakan oleh penterjemah..po/.moDokumen bahasa.

Pemeriksaan akhir dan pengumpulan fail (Packaging)

Sebelum mempublikasikan, sila lakukan pemeriksaan berikut:
1. Kod tersebut mematuhi standard pengaturcaraan WordPress.
2. Semua fungsi telah diuji dengan teliti, termasuk proses pengaktifan, penonaktifan, dan pembuangan (penggunaan).register_uninstall_hook(Pembersihan data.)
3. Semua kod pembangunan (debugging code) dan hasil output sementara telah dikeluarkan.
4. Butiran yang terperinci telah dibuat.readme.txtFail tersebut perlu memenuhi format yang ditetapkan oleh WordPress secara rasmi, dan ia akan dipaparkan pada halaman direktori plugin.
5. Pastikan nama direktori plugin dan nama fail utama adalah unik untuk mengelakkan konflik dengan plugin lain.

Akhir sekali, kompreskan seluruh folder plugin tersebut ke dalam fail ZIP. Kemudian, anda boleh mengemukakannya untuk dipasang terus melalui panel pentadbiran WordPress, atau menghantarinya ke direktori plugin rasmi WordPress.

RINGKASAN

Pembangunan plugin untuk WordPress adalah proses mengubah idea menjadi ciri-ciri yang berguna, dan ia bergantung pada pemahaman yang mendalam tentang struktur asas WordPress (terutamanya API Hook). Bermula dengan mencipta plugin “Hello World” yang mudah, anda akan belajar secara beransur-ansur cara membina antara muka pengurusan, mengendalikan data dengan selamat, berinteraksi dengan pangkalan data, dan akhirnya melaksanakan fungsi internasionalisasi (penyesuaian untuk bahasa yang berbeza). Ini merupakan laluan pertumbuhan bagi setiap pembangun plugin. Mengikuti garis panduan pengaturcaraan yang selamat dan menggunakan antara muka standard seperti API Settings adalah kunci untuk memastikan kualiti, keserasian, dan keselamatan plugin. Dengan amalan yang berterusan serta rujukan kepada kod asas dan plugin lain yang cemerlang, anda akan dapat mencipta tambahan (extension) untuk WordPress yang profesional, boleh dipercayai, dan disukai oleh pengguna.

FAQ - Soalan Lazim

Apa pengetahuan asas yang diperlukan untuk membangunkan plugin WordPress?

Anda perlu memiliki pengetahuan asas pengaturcaraan PHP, serta pemahaman tentang HTML, CSS, dan JavaScript. Kemahiran dalam mengoperasi WordPress dengan lancar, seperti mengurus artikel, halaman, dan menu, akan sangat membantu dalam proses pembangunan. Pemahaman terhadap konsep-konsep asas WordPress seperti jenis artikel, kategori, dan metadata juga sangat penting. Pengetahuan asas tentang pangkalan data MySQL juga akan berguna dalam proses pembangunan aplikasi.

Bagaimana untuk men-debug plugin WordPress saya?

Pertama, pastikan bahawa dalamwp-config.phpBuka fail tersebut.WP_DEBUGWP_DEBUG_LOGDengan cara ini, mesej ralat akan direkodkan dalam fail log, dan tidak akan dipaparkan terus kepada pengunjung. Selain itu, ia boleh digunakan…error_log()Fungsi tersebut akan menulis maklumat pembaikan (debugging information) yang disesuaikan ke dalam log. Bagi logik yang kompleks, penggunaan alat pembaikan profesional seperti Xdebug bersama dengan IDE (sepertiPhpStorm) merupakan cara yang paling efisien.

Bagaimanakah plugin saya boleh berkomunikasi dengan perkhidmatan pihak ketiga (seperti API)?

WordPress menyediakan API HTTP yang sangat kuat (seperti…)wp_remote_get()wp_remote_post()Ia digunakan untuk mengendalikan permintaan HTTP, dan ia lebih baik daripada fungsi PHP asli seperti…file_get_contents()Atau, menggunakan cURL mungkin lebih selamat dan mempunyai keserasian yang lebih baik. Semasa menggunakan fungsi-fungsi ini, ingatlah untuk menguruskan ralat yang mungkin berlaku dan menetapkan masa tamat (timeout) yang sesuai. Bagi API yang perlu dipanggil dengan kerap, pertimbangkan untuk menggunakan mekanisme caching melalui API Transients untuk meningkatkan prestasi.

Bagaimanakah kelas dan fungsi dalam plugin harus dinamakan untuk mengelakkan konflik?

Untuk mengelakkan konflik dengan nama fungsi atau nama kelas daripada plugin atau tema lain, anda mesti menggunakan prefiks yang unik. Biasanya, disyorkan untuk menggunakan singkatan atau nama penuh plugin sebagai prefiks. Sebagai contoh, jika plugin anda dinamakan “Super Tool”, nama fungsi boleh ditulis seperti ini…stool_save_data()Nama kelas boleh disusun seperti ini…Super_Tool_AdminSatu cara yang lebih moden dan selamat lagi adalah dengan menggunakan ruang nama (Namespaces) dalam PHP. Ini memerlukan bahawa persekitaran operasi plugin anda menyokong PHP 5.3 atau versi yang lebih baru.