Panduan Permulaan untuk Membangunkan Plugin WordPress: Membina Ekstensi Fungsi Pertama Anda daripada Awal

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

Preparasi dan pembinaan persekitaran.

Sebelum anda mula menulis kod, anda memerlukan persekitaran pembangunan yang sesuai. Ini termasuk pemasangan WordPress secara lokal dan sebuah editor kod. XAMPP, Local by Flywheel, atau Docker disyorkan untuk membina persekitaran pelayan lokal. Pastikan bahawa WordPress anda adalah versi terkini agar anda dapat menggunakan API dan ciri keselamatan yang terbaru.

Anda perlu memahami struktur asas sebuah plugin WordPress. Plugin yang paling minimum memerlukan sekurang-kurangnya satu fail utama, yang merupakan fail PHP dengan notis header tertentu. Nama fail tersebut biasanya adalah… your-plugin-name.phpIa memberitahu WordPress bahawa ini adalah sebuah plugin, dan menyediakan maklumat seperti nama, deskripsi, versi, serta nama pengarang plugin tersebut.

Dalam editor kod, buat sebuah folder baru untuk projek plugin anda, contohnya: my-first-pluginDalam folder ini, buat fail PHP utama.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Dari awal: Panduan Ultimatif untuk Pembangunan Plugin WordPress dan Tutorial Amali.

Cipta fail plugin pertama anda.

Sekarang, mari kita mulakan dengan membuat fail utama untuk plugin tersebut. Fail ini merupakan titik masuk (entry point) bagi plugin, dan ia mengumumkan kehadirannya kepada WordPress melalui blok ulasan (comments) di bahagian atas.

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.

Menulis maklumat kepala untuk plugin

Dalam fail PHP yang baru sahaja dibuat, anda perlu menambahkan kepala fail plugin yang standard. Sebagai contoh, sebuah plugin yang bernama “Salam Laman Web” boleh bermula seperti ini:

<?php
/**
 * Plugin Name:       站点问候语
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       一个简单的插件,用于在网站前台显示自定义问候语。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

WordPress akan melakukan pemindaian. wp-content/plugins Semua fail PHP dalam direktori tersebut harus dibaca untuk mendapatkan maklumat komen yang khusus, dan maklumat tersebut kemudiannya perlu dipaparkan pada halaman pengurusan plugin di bahagian belakang (backend). Text Domain Untuk kegunaan antarabangsa (internationalization).Domain Path Posisi fail bahasa telah ditentukan.

Kod untuk melaksanakan fungsi utama

Di bawah maklumat kepala (header information), anda boleh mula menulis kod fungsi untuk plugin tersebut. Mari kita ambil sebagai contoh fungsi yang mudah: memaparkan ucapan selamat di sudut kiri atas bahagian kaki halaman (footer) laman web. Untuk mengelakkan daripada membuat perubahan langsung pada fail tema (theme file), kita akan menggunakan sistem hook dalam WordPress.

Pertama sekali, kita perlu membuat sebuah fungsi untuk mengeluarkan ucapan selamat. Kemudian, gunakannya… add_action Fungsi tersebut akan menghubungkan output ini dengan tindakan tertentu dalam WordPress, sebagai contoh… wp_footer

Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan Lengkap Pembangunan Plugin WordPress: Dari Asas Hingga Penggunaan Sebenar

// 定义一个函数来输出问候语
function my_first_plugin_display_greeting() {
    echo '<p style="position: fixed; bottom: 10px; left: 10px; background: #f1f1f1; padding: 10px; border-radius: 5px;">Hello, selamat datang ke laman web saya!</p>';
}

// 使用 add_action 钩子将函数挂载到 wp_footer 动作
add_action( 'wp_footer', 'my_first_plugin_display_greeting' );

Setelah menyelesaikan kod di atas, letakkan folder plugin ini (contohnya…) my-first-pluginSalin keseluruhan kandungan ke dalam direktori pemasangan WordPress anda. wp-content/plugins/ Berada dalam path yang betul. Kemudian, log masuk ke panel pentadbiran WordPress, masuk ke menu “Pemasangan” (Plugins), dan anda sepatutnya dapat melihat plugin “Situs Greeting” (Site Greeting). Klik butang “Aktifkan” (Enable). Sekarang, kunjungi halaman depan (front end) laman web anda, dan anda akan dapat melihat ucapan selamat yang telah disesuaikan di bahagian bawah halaman.

Tambahkan pilihan pengurusan untuk plugin.

Sebuah plugin yang lengkap dengan fungsi-fungsinya biasanya memerlukan halaman konfigurasi yang membenarkan pentadbir untuk membuat tetapan di latar belakang WordPress. Ini melibatkan penciptaan menu pengurusan dan logik pengendalian pilihan-pilihan yang disediakan.

Mencipta halaman tetapan-tetapan plugin.

WordPress menyediakan fungsi untuk menambahkan halaman tetapan untuk plugin. Biasanya, kita akan menggunakan… add_options_pageadd_menu_page Fungsi-fungsi tertentu akan menambahkan halaman ini ke dalam menu latar belakang (backend menu). Contoh di bawah ini menunjukkan cara untuk menambahkan halaman sub-seting yang ringkas di bawah menu utama “Seting” (Settings).

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

Pertama sekali, buat sebuah fungsi untuk merender kandungan HTML halaman tetapan.

// 渲染插件设置页面的函数
function my_first_plugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Pengaturan ucapan selamat datang untuk laman web</h1>
        <form method="post" action="/ms/options.php/" data-trp-original-action="options.php">
            <?php
            settings_fields( 'my_first_plugin_settings_group' );
            do_settings_sections( 'my-first-plugin' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="ms"/></form>
    </div>
    &lt;?php
}

Kemudian, gunakan add_action Kuku itu berada di… admin_menu Halaman pendaftaran fasa ini.

// 将设置页面添加到后台菜单
function my_first_plugin_add_admin_menu() {
    add_options_page(
        '问候语设置',          // 页面标题
        '站点问候语',          // 菜单标题
        'manage_options',      // 权限要求
        'my-first-plugin',     // 菜单别名
        'my_first_plugin_settings_page' // 渲染函数
    );
}
add_action( 'admin_menu', 'my_first_plugin_add_admin_menu' );

Medan tetapan pendaftaran dan penyimpanan data

Hanya mempunyai halaman sahaja tidak cukup; kita perlu mendefinisikan bidang tetapan yang khusus (seperti kotak masukan, kotak pilihan) dan mengurus proses penyimpanan data. Ini memerlukan penggunaan API tetapan WordPress. register_settingadd_settings_sectionadd_settings_field Fungsi-fungsi seperti itu.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Dari Kosong Ke Satu: Panduan Autoriti dan Tutorial Amalan Pembangunan Plugin WordPress

Kod di bawah ini mendaftarkan satu kumpulan tetapan (setting group) dan satu bidang teks (text field) yang membenarkan pengguna untuk menyesuaikan kandungan ucapan selamat tinggal (greeting message).

// 初始化插件的设置
function my_first_plugin_settings_init() {
    // 注册一个设置,将其保存到 `options` 表的 `my_first_plugin_greeting_text` 字段中
    register_setting( 'my_first_plugin_settings_group', 'my_first_plugin_greeting_text' );

// 在页面中添加一个设置区域
    add_settings_section(
        'my_first_plugin_section',
        '自定义问候语',
        null,
        'my-first-plugin'
    );

// 在设置区域中添加一个文本字段
    add_settings_field(
        'my_first_plugin_field',
        '问候语文本',
        'my_first_plugin_field_render',
        'my-first-plugin',
        'my_first_plugin_section'
    );
}
add_action( 'admin_init', 'my_first_plugin_settings_init' );

// 渲染文本输入框的函数
function my_first_plugin_field_render() {
    $option = get_option( 'my_first_plugin_greeting_text', '你好,欢迎来到我的网站!' );
    echo '<input type="text" name="my_first_plugin_greeting_text" value="' . esc_attr( $option ) . '" style="width: 300px;" />';
}

Akhirnya, kita perlu mengubah fungsi yang digunakan untuk mengeluarkan ucapan selamat tinggal sebelum ini, supaya ia dapat membaca tetapan yang disimpan oleh pengguna daripada pangkalan data.

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 my_first_plugin_display_greeting() {
    $greeting_text = get_option( 'my_first_plugin_greeting_text', '你好,欢迎来到我的网站!' );
    echo '<p style="position: fixed; bottom: 10px; left: 10px; background: #f1f1f1; padding: 10px; border-radius: 5px;">'`. esc_html($greeting_text)`.'</p>';
}

Keselamatan plugin dan amalan terbaik

Semasa membangunkan plugin, keselamatan merupakan faktor utama yang perlu diambil kira. Kod yang tidak selamat boleh menyebabkan laman web diserang. Berikut adalah beberapa garis panduan keselamatan yang penting:

Pemverianan dan Pembersihan Data

Pada bila-bila masa, apabila anda mendapatkan data daripada input pengguna (seperti $_POST, $_GET) atau daripada pangkalan data, anda harus menganggap bahawa data tersebut tidak boleh dipercayai. Sebelum data dihantar ke pelayar atau disimpan ke dalam pangkalan data, data tersebut perlu disahkan dan dibersihkan.

Untuk kandungan yang dihasilkan dan dipaparkan pada halaman HTML, gunakan… esc_html()esc_attr()wp_kses_post() Fungsi-fungsi seperti ini digunakan untuk melakukan “escape” (pembebasan) karakter tertentu, bagi mencegah serangan skrip merentas tapak (Cross-Site Scripting atau XSS).
Untuk variabel yang digunakan dalam pertanyaan pangkalan data, sebaiknya gunakan pernyataan yang telah dikompilasi terlebih dahulu (precompiled statements) atau alat serupa. $wpdb->prepare() Metode seperti ini.

Dalam contoh kami, semasa menyimpan tetapan, WordPress… register_setting Fungsi tersebut akan melakukan beberapa pembersihan asas secara automatik. Semasa mengeluarkan hasil, kami telah menggunakan… esc_html() Untuk memastikan bahawa tag HTML dalam teks ucapan selamat diterjemahkan dengan selamat menjadi teks biasa.

Menggunakan kaedah yang bukan berdasarkan CE (Common Encryption Standard) untuk pemeriksaan hak akses

Ketika memproses penghantaran borang dari halaman pengurusan, adalah penting untuk mengesahkan kesahihan permintaan tersebut. Ini termasuk memeriksa hak akses pengguna dan mengesahkan nombor rawak yang digunakan dalam proses penghantaran.

Dalam borang pada halaman tetapan,settings_fields() Fungsi tersebut telah secara automatik memasukkan pengesahan yang tidak berkaitan dengan CE (Conformity Assessment). Namun, jika anda membuat pemprosesan AJAX yang dibuat sendiri atau borang yang tidak standard, pengesahan tersebut perlu dilakukan secara manual. Ini biasanya dilakukan menggunakan kaedah yang sesuai. current_user_can() Periksa kebenaran, gunakan. check_admin_referer()wp_verify_nonce() Verifikasi nombor rawak.

Sebagai contoh, dalam fungsi pemprosesan penghantaran yang dibuat sendiri:

function my_plugin_handle_form_submit() {
    // 检查权限
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( '权限不足' );
    }
    // 验证随机数
    if ( ! isset( $_POST['my_nonce_field'] ) || ! wp_verify_nonce( $_POST['my_nonce_field'], 'my_action' ) ) {
        wp_die( '安全校验失败' );
    }
    // ... 处理安全的数据 ...
}

RINGKASAN

Dengan panduan ini, anda telah menyelesaikan proses pembangunan penuh daripada sebuah fail PHP yang ringkas ke sebuah plugin WordPress yang mempunyai ciri-ciri pengurusan latar belakang. Anda telah mempelajari struktur asas plugin, cara menggunakan “action hooks” untuk menambahkan fungsi baru, cara menggunakan API pengaturan WordPress untuk membuat halaman pilihan yang boleh disesuaikan, serta amalan keselamatan yang sangat penting. Ingatlah bahawa sebuah plugin yang baik bukan sahaja perlu mempunyai fungsi yang kuat, tetapi juga kod yang jelas, selamat, boleh dipercayai, dan mematuhi standard pengaturcaraan WordPress. Dari plugin kecil ini, anda boleh meneruskan untuk meneroka ciri-ciri yang lebih canggih seperti kod yang ringkas, alat tambahan (plugins), dan jenis artikel yang boleh disesuaikan, dan secara beransur-ansur membina pengembangan yang lebih kompleks.

FAQ - Soalan Lazim

Bagaimana untuk menambah sokongan pelbagai bahasa kepada sebuah plugin?

Untuk menambahkan sokongan antarabangsa (i18n) kepada plugin, perkara utama yang perlu dilakukan adalah menggunakan bidang teks (text fields) dan fungsi terjemahan (translation functions). Pertama sekali, pastikan bahawa pengaturan yang berkaitan telah diset dengan betul di bahagian atas fail plugin (header of the plugin file). Text DomainDomain PathDalam kod, gantilah semua rentetan yang perlu diterjemahkan dengan… __()_e() Pakailah fungsi-fungsi yang sesuai untuk mengurus proses terjemahan. Kemudian, gunakan alat seperti Poedit untuk membuat fail template POT, serta menjana fail terjemahan .mo dan .po yang berkaitan, dan letakkan mereka dalam direktori bahasa yang ditentukan oleh plugin tersebut.

Contohnya:echo esc_html( __( ‘Hello, World!’, ‘my-first-plugin’ ) );Apabila pengguna menukar ke bahasa yang diinginkan, WordPress akan secara automatik memuat turun fail terjemahan yang bersesuaian.

Bagaimanakah nama fungsi dalam plugin dapat dielakkan daripada bertembung dengan plugin lain?

Amalan terbaik untuk mengelakkan konflik nama fungsi adalah dengan menggunakan ruang nama (namespace) (PHP 5.3+) atau menambahkan awalan yang unik kepada semua fungsi, kelas, dan konstanta. Awalan tersebut seharusnya cukup unik, dan biasanya menggunakan singkatan atau nama penuh nama plugin.

Sebagai contoh, jangan gunakan… display_greeting()Sebaliknya, kita harus menggunakan… my_first_plugin_display_greeting()Jika anda menggunakan ruang nama PHP, anda boleh mengisytiharkannya di bahagian atas fail. namespace MyFirstPlugin;Kemudian, gunakan nama fungsi yang ringkas di dalamnya, dan semasa memanggil fungsi tersebut dari luar, gunakan penyelesaian melalui ruang nama (namespace).

Bagaimana cara untuk mengeluarkan plugin ke direktori rasmi setelah pembangunan selesai?

Untuk mengeluarkan plugin ke direktori rasmi WordPress.org, anda perlu mencipta akaun di WordPress.org terlebih dahulu dan kemudian menghantar plugin tersebut. Prosesnya termasuk: memastikan kod mematuhi lesen GPL, lulus pemeriksaan standard PHPCS, menyediakan fail readme.txt (mengikut format tertentu), serta menyediakan tangkapan skrin dan dokumentasi yang jelas. Selepas penghantaran, pengaudit akan meninjau kod tersebut, dan jika diluluskan, plugin tersebut boleh diterbitkan. Setelah diterbitkan, pengguna boleh mencari dan memasang plugin anda terus dari panel kawalan WordPress.

Bagaimanakah plugin dapat bersesuaian dengan versi WordPress yang lebih lama?

Untuk mengekalkan keserasian dengan versi WordPress yang lebih lama, semasa pembangunan perlu memeriksa versi WordPress yang sedang digunakan, dan menggunakan pernyataan bersyarat (conditional statements) untuk mengelilingi kod yang bergantung pada API versi baru. Pada masa yang sama, elakkan menggunakan fungsi-fungsi yang telah dihapuskan; jika perlu digunakan, pastikan terdapat penyelesaian alternatif yang tersedia. Dalam fail readme.txt bagi plugin, nyatakan dengan jelas versi minimum WordPress yang diperlukan oleh plugin tersebut, dan berikan arahan yang jelas kepada pengguna. Ujian berkala terhadap prestasi plugin dalam versi WordPress yang lebih lama adalah kunci untuk memastikan keserasian yang berterusan.