Dari awal: Panduan lengkap untuk pembangunan plugin WordPress dan tutorial amali.

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

Mengapa perlu belajar pengembangan plugin WordPress?

WordPress, sebagai sistem pengurusan kandungan yang paling popular di dunia, kekuatannya terletak pada keupayaannya yang sangat boleh diperluas, yang terutamanya bergantung pada ekosistem plugin. Belajar mengembangkan plugin untuk WordPress bukan sahaja membolehkan anda menyesuaikan fungsi laman web dengan lebih mendalam untuk memenuhi keperluan perniagaan yang unik, tetapi juga mengubah kreativiti anda menjadi produk yang boleh dijual dan memasuki pasaran yang besar. Berbanding dengan menggunakan plugin pihak ketiga, mengembangkan plugin sendiri bermakna kod yang lebih ringkas, keselamatan yang lebih tinggi, dan pengoptimuman prestasi yang lebih baik, kerana anda dapat mengawal setiap aspek fungsi dengan tepat.

Selain itu, menguasai kemahiran ini sangat meningkatkan nilai seseorang sebagai pembangun. Sama ada menyediakan penyelesaian yang disesuaikan untuk pelanggan atau membina produk alat sendiri, memahami struktur asas WordPress dan garis panduan pembangunan plugin merupakan kelebihan yang penting. Ia membolehkan anda beralih daripada sekadar pengguna menjadi pencipta, yang mampu memahami dan menggunakan keupayaan WordPress dengan lebih berkesan.hook(Sistem, kaedah operasi data, dan mekanisme keselamatan digunakan untuk membina aplikasi yang kukuh.)

Pembinaan persekitaran pembangunan plugin dan struktur asas

Sebelum mula menulis kod, sebuah persekitaran pembangunan tempatan yang profesional adalah sangat penting. Kami mengesyorkan penggunaan alat seperti Local, DevKinsta, atau Docker untuk dengan cepat membina persekitaran yang merangkumi PHP, MySQL, dan pelayan web. Pastikan versi PHP anda (disyorkan 7.4 atau lebih tinggi) adalah serasi dengan versi WordPress yang dituju, dan aktifkan laporan ralat; ini akan membantu dalam proses pembetulan kesilapan (debugging).

Diperoleh daripada WEB\nDisyorkan untuk membaca. Memulakan dari awal: Membina plugin WordPress pertama anda

Struktur asas sebuah plugin WordPress terdiri daripada satu fail utama. Fail utama ini mesti mengandungi ulasan kepala plugin yang khusus, supaya WordPress dapat mengenalinya.

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.

Cipta fail plugin pertama anda.

Fail utama plugin biasanya dinamakan berdasarkan nama plugin tersebut, sebagai contoh… my-first-plugin.phpAnda perlu meletakkan fail ini di /wp-content/plugins/ Dalam sebuah folder yang berasingan di dalam direktori tersebut. Berikut adalah struktur kod asas bagi fail tersebut:

<?php
/**
 * Plugin Name: 我的第一个定制插件
 * Plugin URI:  https://yourwebsite.com/my-first-plugin
 * Description: 这是一个用于学习 WordPress 插件开发的示例插件。
 * Version:     1.0.0
 * Author:      你的名字
 * License:     GPL v2 or later
 * Text Domain: my-first-plugin
 */

Setelah menyimpan fail tersebut, anda akan dapat melihat plugin ini di halaman “Plugins” di panel pentadbiran WordPress dan mengaktifkannya. Walaupun plugin ini tidak mempunyai sebarang fungsi buat masa ini, anda telah berjaya membuat sebuah plugin yang dikenali oleh WordPress.

Memahami dan menggunakan mekanisme teras WordPress: Hook

Falsafah utama dalam pembangunan plugin WordPress adalah “Hook”, yang membenarkan kod anda untuk “disambungkan” ke dalam proses pelaksanaan utama WordPress pada titik masa yang tertentu, tanpa perlu mengubah fail asas WordPress. Hook terbahagi kepada dua jenis utama: Action dan Filter.

Gunakan pengait tindakan (action hook) untuk melaksanakan tugas.

Action hooks membenarkan anda menjalankan fungsi khusus apabila acara tertentu berlaku. Sebagai contoh, apabila sebuah artikel diterbitkan, anda mungkin ingin menghantar e-mel untuk memberitahu penerima.publish_post Ini adalah contoh klasik bagi “action hook”. Anda boleh menggunakannya… add_action() Fungsi tersebut akan mengikat fungsi tersedia anda (custom function) ke pada hook ini.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Analisis mendalam: Panduan praktikal untuk membangunkan tema baharu menggunakan struktur teras WordPress.

Menggunakan pengait penyaring untuk mengubah suai data.

Hook filter membenarkan anda mengubah data yang dihantar oleh WordPress semasa proses pemprosesan. Sebagai contoh, anda mungkin ingin mengubah kandungan tajuk artikel.the_title Ini adalah satu hook untuk penapis. Anda boleh menggunakannya. add_filter() Fungsi tersebut digunakan untuk mengikat fungsi pemprosesan anda; fungsi ini menerima data asal dan harus mengembalikan data yang telah diubah suai.

Berikut adalah contoh penggunaan gabungan tindakan (actions) dan penapis (filters) pada masa yang sama:

// 1. 定义一个在文章发布时执行的动作函数
function myplugin_on_post_publish( $post_id ) {
    // 获取文章对象
    $post = get_post( $post_id );
    // 记录日志或执行其他操作
    error_log( "文章《{$post->post_title}》已发布,ID: {$post_id}" );
}
// 将上述函数挂接到 ‘publish_post’ 动作钩子
add_action( 'publish_post', 'myplugin_on_post_publish' );

// 2. 定义一个修改文章标题末尾内容的过滤器函数
function myplugin_add_to_title( $title ) {
    // 仅在主循环的文章标题中生效
    if ( is_single() && in_the_loop() ) {
        return $title . ' - [推荐阅读]';
    }
    return $title;
}
// 将上述函数挂接到 ‘the_title’ 过滤器钩子
add_filter( 'the_title', 'myplugin_add_to_title' );

Pengalaman Praktikal: Membina Plugin Custom dengan Halaman Pengurusan

Sebuah plugin yang praktikal biasanya memerlukan halaman konfigurasi yang disediakan di bahagian belakang (backend) WordPress. Kita akan membuat sebuah plugin contoh yang menambahkan halaman sub-menu di bawah menu “Settings” (Pengaturan) di bahagian belakang, dan membenarkan penyimpanan serta pembacaan beberapa pilihan (options).

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

Membuat menu dan halaman pengurusan latar belakang

Pertama sekali, kita perlu menggunakan add_action('admin_menu', ...) Kekunci “hook” digunakan untuk mendaftarkan item menu kita sendiri semasa menu pentadbir dimulakan (diproses). Kita menggunakan… add_options_page() Fungsi ini digunakan untuk menambahkan halaman sub dalam menu “Setelan”.

Mengurus data borang dan pengesahan keselamatan

Pada halaman pengurusan, kita biasanya mempunyai sebuah borang untuk pengguna membuat tetapan. Semasa mengendalikan penghantaran borang tersebut, pengesahan keselamatan mesti dilakukan, termasuk memeriksa hak akses pengguna, menggunakan nilai nonce untuk mencegah penipuan permintaan merentas tapak (CSRF), serta membersihkan dan mengesahkan data yang dimasukkan.

Berikut adalah contoh kod untuk melaksanakan fungsi tersebut:

Diperoleh daripada WEB\nDisyorkan untuk membaca. Tutorial pembangunan plugin WordPress: Membina plugin pertama anda dari awal hingga akhir.

// 钩入 admin_menu 来添加菜单
function myplugin_add_admin_menu() {
    add_options_page(
        '我的插件设置',          // 页面标题
        '我的插件',             // 菜单标题
        'manage_options',       // 所需权限(管理员)
        'myplugin-settings',    // 菜单 slug
        'myplugin_render_settings_page' // 渲染页面的回调函数
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// 渲染设置页面的回调函数
function myplugin_render_settings_page() {
    // 检查用户权限
    if ( !current_user_can( 'manage_options' ) ) {
        wp_die( '权限不足。' );
    }
    ?&gt;
    <div class="wrap">
        <h1>Tetapan-tetapan plugin saya</h1>
        <form method="post" action="/ms/options.php/" data-trp-original-action="options.php">
            <?php
            // 输出必要的设置字段和 nonce 字段
            settings_fields( 'myplugin_settings_group' );
            do_settings_sections( 'myplugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="ms"/></form>
    </div>
    &lt;?php
}

// 初始化插件设置,注册配置项
function myplugin_settings_init() {
    // 注册一个新的设置组‘myplugin_settings_group’和页面‘myplugin-settings’
    register_setting( &#039;myplugin_settings_group&#039;, &#039;myplugin_custom_message&#039; );

// 在页面‘myplugin-settings’上添加一个新的设置区域
    add_settings_section(
        &#039;myplugin_section&#039;,
        &#039;自定义消息设置&#039;,
        null,
        &#039;myplugin-settings&#039;
    );

// 向该区域添加一个字段
    add_settings_field(
        &#039;myplugin_field&#039;,
        &#039;欢迎消息&#039;,
        &#039;myplugin_field_render&#039;,
        &#039;myplugin-settings&#039;,
        &#039;myplugin_section&#039;
    );
}
add_action( &#039;admin_init&#039;, &#039;myplugin_settings_init&#039; );

// 渲染设置字段的函数
function myplugin_field_render() {
    $option = get_option( &#039;myplugin_custom_message&#039;, &#039;你好,访客!&#039; );
    echo &quot;<input type='text' name='myplugin_custom_message' value='" . esc_attr( $option ) . "' />";
}

// 在前端使用保存的选项
function myplugin_display_message() {
    $message = get_option( 'myplugin_custom_message', '你好,访客!' );
    echo '<p class="myplugin-message">'`. esc_html($message)`.'</p>';
}
// 你可以将此函数通过短码或钩子在前端调用,例如:
add_action( 'wp_footer', 'myplugin_display_message' );

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

Plugin yang telah dibangunkan mesti melalui proses pengurusan keselamatan, penyesuaian untuk penggunaan di pelbagai negara (internationalization), dan pengumpulan semua komponen menjadi satu fail yang boleh diedarkan (packaging) dengan teliti sebelum dikeluarkan.

Keselamatan adalah sangat penting. Semua data yang diperolehi daripada input pengguna (seperti $_GET, $_POST, $_REQUEST) mesti disahkan dan dibersihkan. WordPress menyediakan pelbagai fungsi untuk membantu proses ini. sanitize_text_field(), esc_html(), esc_url()wp_strip_all_tags() Untuk pengeluaran sebelum pemformatan, digunakan mekanisme “escape”. Jangan pernah percaya pada input yang diberikan oleh pengguna.

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.

Untuk membolehkan plugin digunakan oleh pengguna di seluruh dunia, anda perlu membuat persiapan untuk penyesuaian antarabangsa (internationalization atau i18n). Ini bermakna semua rentetan teks yang dipaparkan dalam plugin perlu disesuaikan untuk pelbagai bahasa. __()_e() Fungsi-fungsi tersebut perlu dibungkus (wrapped) dan domain teks (Text Domain) perlu diatur dengan betul. Dengan cara ini, penterjemah boleh menggunakan fail .po/.mo untuk menterjemahkan plugin anda.

Akhir sekali, anda perlu menulis fail readme.txt dengan teliti. Format fail tersebut harus mematuhi spesifikasi WordPress.org. Pastikan kod plugin anda mengikut standard pengaturcaraan WordPress, buang semua kod pembangunan (debugging code), dan kompreskan kod tersebut ke dalam fail zip. Anda boleh memilih untuk mengeluarkannya ke direktori plugin rasmi WordPress atau mengedarkannya di laman web peribadi anda.

RINGKASAN

Pembangunan plugin untuk WordPress adalah proses yang menggabungkan kreativiti dengan platform yang kuat. Kita bermula dengan memahami kepentingannya, kemudian membina persekitaran yang sesuai dan membuat fail-fail asas untuk plugin tersebut. Dengan mempelajari dan mengamalkan mekanisme utama seperti “action hooks” dan “filter hooks”, kita memahami cara berinteraksi dengan WordPress dengan berkesan. Selepas itu, kita mencipta sebuah plugin yang lengkap dengan halaman pengurusan pentadbiran, yang merangkumi proses menambah menu, mengatur pendaftaran pengguna, mengurus keselamatan data, dan penyampaian kandungan di bahagian hadapan (frontend). Akhirnya, kita membincangkan aspek-aspek penting yang mempengaruhi kualiti dan kemudahan penyebaran plugin, seperti amalan keselamatan, persiapan untuk penggunaan dalam pelbagai bahasa (internationalization), serta proses pembungkusan plugin sebelum ia diterbitkan. Dengan mengikuti langkah-langkah dan amalan terbaik ini, anda akan dapat membina plugin WordPress yang berfungsi dengan cekap, selamat, boleh dipercayai, dan mudah disebarkan, seterusnya memanfaatkan sepenuhnya potensi WordPress.

FAQ - Soalan Lazim

Apa pengetahuan asas yang diperlukan untuk membangunkan plugin WordPress?

Anda perlu memiliki pengetahuan asas dalam bahasa pengaturcaraan PHP, kerana kod asas WordPress dan pluginnya ditulis dalam PHP. Pemahaman yang asas tentang HTML, CSS, dan JavaScript juga diperlukan untuk menguruskan penampilan dan interaksi pada bahagian hadapan (front end). Pengetahuan tentang konsep asas pangkalan data MySQL (seperti pertanyaan, penambahan, pengeditan, dan penghapusan data) juga akan sangat membantu, kerana WordPress menggunakan MySQL untuk menyimpan data.

Adakah fail utama plugin mesti dinamakan dengan nama tertentu?

Tidak, fail utama plugin boleh diberi nama apa saja, tetapi untuk kejelasan dan pematuhan piawaian, biasanya disyorkan untuk menggunakan nama dalam bahasa Inggeris atau pinyin yang mewakili fungsi plugin tersebut. Satu-satunya syarat adalah fail PHP tersebut harus mengandungi maklumat penjelasan (header comments) yang betul, dan WordPress menggunakan maklumat ini untuk mengenal pasti dan memuatkan plugin.

Apa perbezaan asas antara hook tindakan (action hook) dan hook penapis (filter hook)?

Hook untuk tindakan digunakan untuk “melaksanakan sesuatu kod” apabila acara tertentu berlaku; ia tidak memerlukan fungsi anda untuk mengembalikan nilai. Tujuannya adalah untuk melakukan tugas atau operasi tertentu. Hook untuk penapisan pula digunakan untuk “mengubah sesuatu data”; ia memerlukan fungsi anda untuk menerima sebuah nilai dan harus mengembalikan nilai yang telah diubah. Dengan kata lain, tindakan adalah untuk “melakukan sesuatu”, manakala penapisan adalah untuk “mengubah sesuatu”.

Bagaimana untuk memastikan bahawa plugin saya tidak akan berselisih dengan plugin lain?

Menambahkan prefiks unik kepada semua fungsi, kelas, konstanta, dan nama pilihan anda adalah amalan terbaik untuk mencegah konflik. Sebagai contoh, jangan gunakan…get_data()Nama fungsi yang seragam seperti ini sepatutnya digunakan…myplugin_get_data()Pada masa yang sama, dengan mengapsulkan kod anda dalam kelas atau ruang nama (namespace), anda dapat mengasingkan variabel dan fungsi dengan lebih berkesan.