Panduan Permulaan Pembangunan Plugin WordPress: Bina Plugin Custom Pertama Anda Dari Kosong

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

Pembantu WordPress merupakan komponen penting untuk memperluas fungsi laman web. Ia membenarkan anda menambahkan ciri-ciri baru secara modular, tanpa perlu mengubah kod asas WordPress. Dengan membangunkan pembantu sendiri, anda dapat mencipta fungsi yang benar-benar disesuaikan untuk memenuhi keperluan khusus, serta memastikan keserasian dengan tema dan pembantu lain. Panduan ini akan membimbing anda melalui proses pembinaan pembantu WordPress yang lengkap dan mempunyai struktur yang teratur.

Struktur asas dan spesifikasi plugin WordPress

Sebuah plugin standard untuk WordPress perlu mengikuti struktur fail dan spesifikasi tertentu untuk memastikan ia dapat dikenali dengan betul oleh sistem WordPress, beroperasi dengan selamat, dan mudah diselenggara.

Buat fail plugin utama

Setiap plugin mesti mempunyai satu fail PHP utama, dan nama fail tersebut biasanya sama dengan nama direktori plugin tersebut. Di awal fail tersebut, mesti terdapat sebuah ulasan khusus yang mengandungi maklumat plugin, yang digunakan oleh WordPress untuk mengenal pasti plugin tersebut.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Penguraian Mendalam Pembangunan Plugin WordPress: Dari Permulaan Hingga Penyesuaian yang Cekap

Cipta sebuah fail dengan nama “” dalam direktori plugin. my-first-plugin.php Fail tersebut, dan tambahkan maklumat kepala berikut:

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.
<?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
 */

Patuhi amalan terbaik keselamatan

Semua kod plugin harus dilalui pemeriksaan keselamatan untuk mencegah akses langsung. Pada masa yang sama, penggunaan prefiks unik harus digunakan untuk menamakan semua fungsi, kelas, dan konstanta untuk mengelakkan konflik dengan tema atau plugin lain.

Dalam fail utama plugin, kod perlindungan keselamatan harus ditambahkan segera selepas ulasan di bahagian atas, dan gunakan satu prefiks yang unik (seperti…) mfp_Gunakan nama yang sesuai untuk menamakan fungsi anda:

// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

// 使用唯一前缀定义一个函数
function mfp_display_greeting() {
    echo '<p>Hello, selamat menggunakan plugin pertama saya!</p>';
}

Implement core functions: Actions and Filters

Mekanisme pengembangan tambahan (extensions) untuk WordPress bergantung pada konsep “Hook”, yang dibahagikan kepada dua kategori: “Actions” dan “Filters”. Memahami dan menggunakan kedua-duanya dengan betul adalah kunci dalam pembangunan plugin.

Gunakan pengait tindakan untuk menambah fungsi

Action hooks membenarkan anda menjalankan kod anda pada titik masa tertentu atau apabila acara tertentu berlaku. Sebagai contoh, untuk menambahkan segmen teks di bahagian bawah halaman, anda boleh menggunakan action hooks. wp_footer Tindakan.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Pembangunan plugin WordPress: Membina plugin fungsi khusus dari awal hingga akhir.

Mount the previously defined function to wp_footer Di atas kait:

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

Dengan cara ini, apabila WordPress menjalankan kod pada bahagian kaki halaman (footer), fungsi yang berkaitan akan dipanggil. mfp_display_greeting Fungsi tersebut mengeluarkan ucapan selamat.

Menggunakan pengait penapis (filter hook) untuk mengubah kandungan

Hook filter digunakan untuk mengubah data. Mereka menerima satu nilai, memprosesnya, dan kemudian mengembalikannya. Sebagai contoh, untuk mengubah sambungan (suffix) laluan artikel secara laluan, anda boleh menggunakan hook filter tersebut. the_title Penapis.

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

Cipta sebuah fungsi untuk mengubah tajuk artikel, dan tambahkannya ke dalam penapis:

// 定义一个函数来修改文章标题
function mfp_modify_title( $title, $id = null ) {
    // 仅在前端修改非管理员页面的标题
    if ( ! is_admin() && in_the_loop() ) {
        $title .= ' - 来自我的插件';
    }
    return $title;
}
// 将函数挂载到 the_title 过滤器钩子,参数3是优先级,参数4是接受的参数个数
add_filter( 'the_title', 'mfp_modify_title', 10, 2 );

Membina antaramuka pengurusan plugin

Kebanyakan plugin memerlukan halaman tetapan di belakang tabir (backend) agar pentadbir laman web dapat mengkonfigurasi pilihan plugin tersebut. WordPress menyediakan API yang lengkap untuk membuat menu pengurusan dan borang yang standard.

Mencipta halaman tetapan-tetapan plugin.

Gunakan add_menu_page()add_options_page() Fungsi tersebut boleh menambahkan halaman pengurusan untuk plugin anda. Biasanya, halaman ini terletak di bawah menu “Setelan”.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Menguasai Pembangunan Plugin WordPress dari Awal: Prinsip, Amalan, dan Teknik Lanjutan

Cipta sebuah fungsi untuk mendaftar dan mengurus menu, kemudian muatkan (mount)nya ke... admin_menu Tindakan:

// 添加插件设置页面到后台菜单
function mfp_add_admin_menu() {
    add_options_page(
        '我的第一个插件设置', // 页面标题
        '我的插件设置',       // 菜单标题
        'manage_options',     // 权限要求
        'my-first-plugin',    // 菜单slug
        'mfp_render_settings_page' // 用于渲染页面的回调函数
    );
}
add_action( 'admin_menu', 'mfp_add_admin_menu' );

// 渲染设置页面的回调函数
function mfp_render_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Pengaturan plugin pertama saya</h1>
        <form action="/ms/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            settings_fields( 'mfp_settings_group' );
            do_settings_sections( 'my-first-plugin' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="ms"/></form>
    </div>
    &lt;?php
}

Opsi Pendaftaran dan Pengaturan Pengurusan

Penyediaan API untuk WordPress membolehkan pengurusan pendaftaran, pengesahan, dan penyimpanan tetapan dengan selamat. Anda perlu mendefinisikan medan tetapan, bab-bab yang berkaitan, dan menggunakan fungsi khusus untuk menyimpan data tersebut.

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.

Teruskan menambahkan kod berikut ke dalam fail utama plugin untuk mendaftarkan tetapan tersebut:

// 初始化插件设置
function mfp_settings_init() {
    // 注册一个新的设置组和选项
    register_setting( 'mfp_settings_group', 'mfp_settings', 'mfp_sanitize_settings' );

// 在插件设置页面添加一个节
    add_settings_section(
        'mfp_section_basic',
        '基本设置',
        null,
        'my-first-plugin'
    );

// 向节中添加一个字段
    add_settings_field(
        'mfp_greeting_text',
        '问候语文本',
        'mfp_greeting_text_render',
        'my-first-plugin',
        'mfp_section_basic'
    );
}
add_action( 'admin_init', 'mfp_settings_init' );

// 渲染问候语文本输入字段
function mfp_greeting_text_render() {
    $options = get_option( 'mfp_settings' );
    $value = isset( $options['greeting_text'] ) ? $options['greeting_text'] : '你好,世界!';
    echo '<input type="text" name="mfp_settings[greeting_text]" value="' . esc_attr( $value ) . '" class="regular-text">';
}

// 清理和验证设置输入
function mfp_sanitize_settings( $input ) {
    $sanitized = [];
    if ( isset( $input['greeting_text'] ) ) {
        $sanitized['greeting_text'] = sanitize_text_field( $input['greeting_text'] );
    }
    return $sanitized;
}

Pengantarabangsaan plugin dan persiapan penempatan (Deployment Preparation)

Untuk membolehkan plugin tersebut digunakan oleh pengguna di seluruh dunia dan akhirnya diterbitkan, anda perlu melakukan proses internasionalisasi (penyesuaian untuk penggunaan dalam bahasa yang berbeza) dan pengoptimuman kod.

Mengimplementasikan pengekstrakan teks ke dalam pelbagai bahasa (internationalization of text)

Menggunakan WordPress __()_e() Gunakan fungsi-fungsi seperti ini untuk mengemas semua rentetan teks yang perlu diterjemahkan, dan muatkan kandungan bidang teks dengan betul.

Ubah fungsi output anda agar ia menyokong terjemahan:

function mfp_display_greeting() {
    $options = get_option( ‘mfp_settings’ );
    $greeting = isset( $options[‘greeting_text’] ) ? $options[‘greeting_text’] : __( ‘你好,世界!’, ‘my-first-plugin’ );
    echo ‘<p>’. esc_html($greeting)‘. ‘</p>’;
}

// 在插件加载时加载翻译文件
function mfp_load_textdomain() {
    load_plugin_textdomain( ‘my-first-plugin’, false, dirname( plugin_basename( __FILE__ ) ) . ‘/languages/’ );
}
add_action( ‘plugins_loaded’, ‘mfp_load_textdomain’ );

Optimizing code and creating release packages

Setelah pembangunan selesai, anda perlu menghapus kod pembetulan (debugging code) dan memastikan semua fungsi mempunyai awalan yang unik. Kemudian, kompreskan keseluruhan direktori plugin tersebut ke dalam fail ZIP. Fail ZIP ini boleh diunggah dan dipasang melalui panel pentadbiran WordPress.

Pastikan bahawa fail utama mengandungi prosedur pembuangan yang standard, yang digunakan untuk membersihkan pilihan pangkalan data apabila pengguna memadamkan tambahan (plugin). Ini dicapai dengan mendaftarkan “hook” pembuangan (uninstallation hook).

// 插件卸载时的清理操作
register_uninstall_hook( __FILE__, ‘mfp_uninstall’ );
function mfp_uninstall() {
    delete_option( ‘mfp_settings’ );
}

RINGKASAN

Artikel ini menerangkan secara terperinci proses penuh untuk membuat plugin khusus WordPress dari awal. Kita bermula dengan memahami struktur asas plugin dan garis panduan keselamatan, kemudian bergerak lebih dalam ke sistem pengaitan (actions dan filters) yang terdapat dalam WordPress, serta belajar cara membina antara muka pengurusan pentadbiran yang mempunyai halaman tetapan. Akhirnya, kita juga membincangkan tentang penginternasionalan plugin, pengoptimuman kod, dan langkah-langkah persiapan untuk penempatan plugin tersebut.

Ingatlah, pembangunan plugin yang berkualiti bukan sahaja melibatkan pelaksanaan fungsi-fungsi tertentu, tetapi juga keselamatan kod, kebolehjagaan, dan pematuhan kepada standard WordPress. Saya syorkan anda mempelajari dengan mendalam panduan rasmi WordPress untuk pembangunan plugin, mengikuti garis panduan penulisan kod, dan terus mengamalkannya dalam projek-projek sebenar.

FAQ - Soalan Lazim

Apa pengetahuan asas yang diperlukan untuk membangunkan plugin WordPress?

Anda perlu memiliki pengetahuan asas dalam pengaturcaraan PHP, termasuk pemahaman tentang variabel, fungsi, array, dan pengurusan keputusan berdasarkan syarat (conditional statements). Pemahaman asas tentang HTML dan CSS juga diperlukan, serta pengetahuan tentang operasi asas WordPress dan struktur bahagian belakang (backend) akan sangat membantu. Mengetahui pengaturcaraan berorientasikan objek (Object-Oriented Programming/OOP) merupakan kelebihan dalam pembangunan yang lebih lanjut.

我必须使用类(Class)来编写插件吗?

Tidak semestinya. Untuk plugin yang mudah, penggunaan pengaturcaraan prosedural (sekumpulan fungsi) adalah sepenuhnya boleh dilakukan, dan ini juga merupakan cara yang digunakan dalam contoh dalam artikel ini. Namun, untuk plugin yang lebih kompleks dan mempunyai lebih banyak fungsi, penggunaan pengaturcaraan berorientasikan objek (OOP) serta pengaturan kod dalam bentuk kelas adalah pilihan yang lebih baik. Ini dapat mengatur kod dengan lebih efektif, mengelakkan konflik nama, dan meningkatkan kebolehjagaan (maintainability) kod.

Bagaimana untuk membaiki (debug) kod plugin WordPress saya?

Langkah pertama adalah mengaktifkan mod pembangunan (debug mode) di WordPress. Di laman web… wp-config.php Dalam fail tersebut, akan… WP_DEBUG Konstanta ditetapkan kepada trueIni akan memaparkan ralat PHP, notis, dan amaran pada halaman web. Selain itu, anda boleh menggunakan… error_log() Fungsi tersebut akan menulis maklumat pembaikan ke log ralat pada pelayan, atau menggunakan alat pembaikan yang profesional (seperti Query Monitor) untuk memeriksa masalah berkaitan pertanyaan pangkalan data, pelaksanaan fungsi tertentu (hook), dan prestasi sistem.

Bagaimanakah untuk memastikan keselamatan semasa pembangunan plugin?

Langkah-langkah kritikal untuk memastikan keselamatan termasuk: sentiasa mengesahkan dan membersihkan input pengguna (menggunakan…) sanitize_text_field(), esc_html(), wp_kses_post() Fungsi-fungsi seperti ini digunakan untuk semua pertanyaan pangkalan data. $wpdb Metode kelas tersebut digunakan, dan pernyataan `prepare` dimanfaatkan untuk mencegah serangan SQL injection; semua kandungan dinamik yang dihasilkan dan dipaparkan ke dalam pelayar akan di-escape; selain itu, ciri-ciri terbina dalam WordPress seperti medan `nonce` dan pemeriksaan hak akses juga digunakan.current_user_can()Ia digunakan untuk melindungi borang dan permintaan AJAX.