Panduan Terakhir Pembangunan Plugin WordPress: Membina Ekspansi Fungsi Khusus Dari Kosong Ke Sifar

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

Pengurusan persiapan dan konfigurasi persekitaran

Sebelum mula menulis kod, adalah sangat penting untuk membina persekitaran pembangunan tempatan yang profesional. Ini bukan sahaja dapat meningkatkan kecekapan pembangunan, tetapi juga mengelakkan risiko yang mungkin timbul semasa ujian di pelayan dalam talian. Perisian pelayan tempatan yang mengintegrasikan Apache/Nginx, MySQL, dan PHP seperti Local by Flywheel, XAMPP, atau MAMP disyorkan untuk digunakan. Pastikan bahawa versi PHP yang anda gunakan adalah selaras dengan persekitaran WordPress yang dituju; biasanya, PHP 7.4 atau versi yang lebih baru disyorkan.

Anda memerlukan sebuah editor kod, seperti Visual Studio Code, PhpStorm, atau Sublime Text. Editor-editor ini biasanya menyediakan ciri-ciri seperti penyorotan sintaks, cadangan kod, dan integrasi dengan sistem kawalan versi, yang dapat meningkatkan pengalaman penulisan kod dengan ketara. Selain itu, adalah penting untuk memahami dokumen “Manual Pembangunan Plugin” dan “Standard Penulisan Kod” rasmi WordPress, serta mengikut garis panduan yang ditetapkan (seperti penggunaan awalan tertentu untuk mengelakkan konflik nama fungsi) sebagai asas untuk membangunkan plugin yang berkualiti tinggi.

Memahami struktur asas plugin

Satu plugin WordPress yang paling asas boleh terdiri daripada hanya satu fail utama. Nama fail utama ini sangat penting, dan ia biasanya dinamakan berdasarkan fungsi plugin tersebut. my-custom-plugin.phpPada awal fail, mesti terdapat sebuah ulasan kepala plugin yang mematuhi format tertentu. Ini merupakan kunci bagi WordPress untuk mengenal pasti plugin tersebut.

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

Komen dalam header plugin menyediakan maklumat asas tentang plugin tersebut, seperti nama, deskripsi, versi, penulis, dan lain-lain. Berikut adalah contoh header plugin yang standard:

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-custom-plugin
 * Description:       这是一个用于演示的 WordPress 自定义插件。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-custom-plugin
 * Domain Path:       /languages
 */

Pembangunan Teras: Hook Aksi dan Penapis

Inti pembangunan plugin untuk WordPress terletak pada pemahaman dan penggunaan sistem “Hook”nya. Hook terbahagi kepada dua jenis: Action dan Filter. Action membenarkan anda menjalankan kod khusus pada titik-titik tertentu dalam kitaran hidup WordPress (seperti semasa pengaturan awal, memuatkan halaman, atau menerbitkan artikel). Filter pula membenarkan anda mengubah data yang dihasilkan oleh WordPress atau plugin lain semasa ia berjalan.

Gunakan pengait tindakan untuk menambah fungsi

Hook tindakan telah diluluskan add_action() Pemanggilan fungsi. Sebagai contoh, jika anda ingin menambahkan notis khusus di bahagian atas laman web pentadbiran, anda boleh menggunakan fungsi yang sesuai untuk mencapai ini. admin_notices Ini adalah pengait tindakan (action hook). Anda perlu membuat sebuah fungsi untuk mengeluarkan kandungan notifikasi, kemudian menggantungkan fungsi tersebut pada pengait tersebut.

Dalam contoh di bawah ini, kami telah mencipta sebuah fungsi. my_custom_admin_notice Outputkan mesej pemberitahuan sederhana, dan lakukan ini melalui add_action Bind it to admin_notices Kuku.

function my_custom_admin_notice() {
    echo '<div class="notice notice-success is-dismissible"><p>My custom plugin has been successfully enabled!</p></div>';
}
add_action( 'admin_notices', 'my_custom_admin_notice' );

Menggunakan pengait penapis (filter hook) untuk mengubah kandungan

Menyaring cangkuk melalui add_filter() Pemunggahan fungsi (function mounting) digunakan untuk mengubah data yang dihantar kepadanya. Sebuah contoh yang biasa adalah mengubah kandungan artikel dengan menambahkan pernyataan hak cipta secara automatik di bahagian akhirnya.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Menguasai pembangunan plugin WordPress: Membina modul fungsi tambahan pertama anda dari awal hingga akhir.

Dalam contoh di bawah ini, kami telah mencipta sebuah fungsi. append_copyright_to_contentIa menerima kandungan artikel sebagai parameter, menambahkan maklumat hak cipta di akhirnya, dan kemudian mengembalikan kandungan yang telah diubah suai. Kita menggunakan… add_filter Bind it to the_content Penapis.

function append_copyright_to_content( $content ) {
    if ( is_single() ) { // 仅在单篇文章页面生效
        $copyright = '<p><em>© 2026 Hak cipta dilindungi undang-undang. Artikel ini dihasilkan oleh “My Plugin”.</em></p>';
        $content .= $copyright;
    }
    return $content;
}
add_filter( 'the_content', 'append_copyright_to_content' );

Membuat halaman pengurusan dan tetapan pilihan

Banyak plugin memerlukan antara muka konfigurasi untuk pengguna, yang biasanya dilakukan dengan menambahkan halaman tetapan yang berasingan di latar belakang WordPress. WordPress menyediakan API yang kaya untuk memudahkan proses ini. add_menu_page()add_options_page()

Tambahkan menu pengurusan peringkat tinggi.

Gunakan add_menu_page() Fungsi tersebut boleh membuat satu item menu utama untuk plugin anda. Anda perlu mendefinisikan parameter seperti tajuk halaman, tajuk menu, kebenaran pengguna, nama alternatif menu, dan fungsi panggilan balik (callback function) yang digunakan untuk merender kandungan halaman.

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

Kod di bawah ini menunjukkan cara untuk membuat halaman menu utama yang dinamakan “My Plugin Settings”. Fungsi panggilan balik (callback function) juga disertakan. render_my_plugin_settings_page Tanggungjawab untuk menghasilkan kandungan HTML halaman tersebut.

function my_plugin_add_menu_page() {
    add_menu_page(
        '我的插件设置',          // 页面标题
        '我的插件',             // 菜单标题
        'manage_options',       // 所需用户权限
        'my-plugin-settings',   // 菜单别名 (slug)
        'render_my_plugin_settings_page', // 回调函数
        'dashicons-admin-generic', // 图标(可选)
        30                      // 菜单位置(可选)
    );
}
add_action( 'admin_menu', 'my_plugin_add_menu_page' );

function render_my_plugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Tetapan-tetapan plugin saya</h1>
        <form method="post" action="/ms/options.php/" data-trp-original-action="options.php">
            <?php
            settings_fields( 'my_plugin_settings_group' );
            do_settings_sections( 'my-plugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="ms"/></form>
    </div>
    &lt;?php
}

Medan tetapan pendaftaran dan pengesahan

Untuk menyimpan input pengguna dengan selamat, anda mesti menggunakan API yang disediakan oleh WordPress. Ini termasuk penggunaan… register_setting()add_settings_section()add_settings_field() Fungsi-fungsi seperti ini. Dengan mengatur API, proses pengesahan data, pemeriksaan permintaan yang tidak selamat (nonce), dan penyimpanan dalam pangkalan data akan dilakukan secara automatik.

Kod di bawah menunjukkan cara untuk mendaftar satu kumpulan tetapan (setting group), satu kawasan tetapan (setting area), dan satu bidang input teks (text input field). sanitize_my_setting Digunakan untuk membersihkan dan mengesahkan data yang dimasukkan oleh pengguna sebelum disimpan ke dalam pangkalan data.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Belajar mengembangkan plugin WordPress dari awal: Bina fungsi khusus pertama anda

function my_plugin_settings_init() {
    // 注册一个设置
    register_setting( 'my_plugin_settings_group', 'my_plugin_option_name', 'sanitize_my_setting' );

// 添加一个设置区域
    add_settings_section(
        'my_plugin_main_section',
        '主要设置',
        null, // 可选的区域描述回调函数
        'my-plugin-settings'
    );

// 在区域内添加一个字段
    add_settings_field(
        'my_plugin_text_field',
        '示例文本字段',
        'my_plugin_text_field_callback',
        'my-plugin-settings',
        'my_plugin_main_section'
    );
}
add_action( 'admin_init', 'my_plugin_settings_init' );

function sanitize_my_setting( $input ) {
    // 清理输入,例如移除 HTML 标签
    return sanitize_text_field( $input );
}

function my_plugin_text_field_callback() {
    $value = get_option( 'my_plugin_option_name', '默认值' );
    echo '<input type="text" name="my_plugin_option_name" value="' . esc_attr( $value ) . '" class="regular-text" />';
}

Internationalisasi dan Amalan Keselamatan untuk Plugin

Sebuah plugin yang matang seharusnya menyokong berbilang bahasa dan mematuhi standard keselamatan yang tertinggi. Pengaturcaraan antarabangsa (i18n) memastikan plugin tersebut dapat diterjemahkan dengan mudah oleh pengguna di seluruh dunia. Amalan keselamatan pula melindungi plugin anda serta laman web pengguna daripada serangan yang biasa berlaku.

Mengimplementasikan sokongan terjemahan teks

WordPress menggunakan rangka kerja GNU gettext untuk melaksanakan pengekstrakan bahasa (internationalization). Anda perlu membungkus semua rentetan teks yang akan dipaparkan kepada pengguna dalam plugin menggunakan fungsi tertentu. Fungsi yang paling sering digunakan adalah… __()(Used to return the translated string) dan _e()(Ia digunakan untuk memaparkan terus teks yang telah diterjemahkan.) Anda juga perlu menetapkan nilai dengan betul dalam bahagian kepala plugin (plugin header). Text DomainDomain PathDan gunakan load_plugin_textdomain() Fungsi tersebut memuatkan fail terjemahan pada masa yang sesuai.

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.

Kod di bawah menunjukkan cara untuk memuatkan bidang teks daripada plugin dan mengeluarkan satu rentetan yang boleh diterjemahkan.

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

// 在需要的地方使用翻译函数
$greeting = __( '你好,世界!', 'my-custom-plugin' );
_e( '这是一个直接输出的消息。', 'my-custom-plugin' );

Patuhi garis panduan keselamatan yang asas.

Keselamatan plugin adalah sangat penting dalam proses pembangunan. Semua input dari pengguna mesti disemak dan dibersihkan. Pemverian (Validation) adalah proses untuk memeriksa sama ada data tersebut memenuhi format yang dijangka (seperti sama ada ia merupakan alamat e-mel atau tidak), dan ia boleh dilakukan menggunakan pelbagai kaedah. filter_var() Fungsi-fungsi seperti ini digunakan untuk membersihkan (sanitizing) data. Proses sanitization bertujuan untuk menghilangkan karakter-karakter yang tidak selamat daripada data. WordPress menyediakan sebilangan besar fungsi untuk tujuan ini. sanitize_text_field()esc_html()esc_url() dan sebagainya.

Apabila mana-mana data dihantar ke pelayar, ia mesti di-ejek (escaped) untuk mencegah serangan skrip merentas tapak (Cross-Site Scripting, XSS). Gunakan fungsi-fungsi yang sesuai untuk melakukan proses ini. esc_html()esc_attr()wp_kses_post()Semasa melakukan operasi pada pangkalan data, adalah penting untuk menggunakan… $wpdb Kelas dan pernyataan pra-pemprosesan digunakan untuk mencegah serangan SQL injection. Jangan pernah menyatukan input pengguna secara langsung ke dalam kueri SQL.

RINGKASAN

Pembangunan plugin WordPress merupakan proses mengubah idea-idea kreatif menjadi tambahan fungsional kepada sistem tersebut, dan kuncinya terletak pada pemahaman yang mendalam tentang sistem Hook. Bermula dengan membina persekitaran lokal dan menulis kod standard untuk header plugin, pembangun perlu mahir menggunakan Hook jenis Action dan Filter untuk berinteraksi dengan kitaran hidup (lifecycle) dan aliran data (data flow) WordPress. Pembuatan halaman pentadbiran (admin pages) serta tetapan (settings) menyediakan antara muka interaksi dengan pengguna, manakala amalan pengantarabangsaan (internationalization) dan keselamatan yang ketat (pemeriksaan, pembersihan data, pengelakan serangan, operasi pangkalan data yang selamat) merupakan asas penting untuk memastikan plugin tersebut profesional, boleh dipercayai, dan selamat digunakan di seluruh dunia. Mengikuti standard pengaturcaraan WordPress, bermula dengan fungsi yang mudah dan kemudian membina logik yang lebih kompleks, merupakan cara yang berkesan untuk menguasai seni pembangunan plugin.

FAQ - Soalan Lazim

Berapa banyak fail yang diperlukan sekurang-kurangnya untuk sebuah plugin?

Sebuah plugin WordPress yang lengkap dengan semua fungsi boleh hanya mempunyai satu fail PHP. Selagi fail tersebut mengandungi ulasan kepala plugin (Plugin Header) yang betul, ia akan dikenali oleh WordPress sebagai sebuah plugin yang berasingan. Tentu saja, apabila fungsi plugin menjadi lebih kompleks, anda mungkin perlu memecahkan kod ke dalam beberapa fail lain, serta menyertakan sumber seperti CSS, JavaScript, dan gambar.

Bagaimana untuk mencegah nama fungsi plugin daripada bertembung dengan plugin lain?

WordPress mengesyorkan penggunaan awalan yang unik untuk menamakan semua fungsi, kelas, pemboleh ubah, dan konstanta anda. Awalan ini biasanya berkaitan dengan nama plugin atau nama syarikat anda, dan perlu cukup unik. Sebagai contoh, jika plugin anda bernama “Awesome Slider”, anda boleh menggunakan awalan seperti “AWESOME_Slider_” untuk semua elemen kod yang berkaitan dengan plugin tersebut. aslider_init()ASLIDER_VERSION Namaan seperti ini. Satu cara yang lebih moden dan elegan adalah dengan menggunakan ruang nama (Namespace) dalam PHP, yang dapat menyelesaikan masalah konflik nama secara menyeluruh.

Apa yang sepatutnya dilakukan apabila plugin diaktifkan?

Mengaktifkan plugin merupakan masa yang ideal untuk melaksanakan tugas-tugas penyetelan sekali gus. Anda boleh mencapainya dengan mendaftar sebuah “activation hook” (pautan pengaktifan). Buat sebuah fungsi di mana anda akan memeriksa keserasian persekitaran (seperti versi PHP), membuat atau mengemaskini jadual pangkalan data yang diperlukan, serta menetapkan nilai laluan untuk pilihan-pilihan plugin. register_activation_hook( FILE, ‘your_setup_function’ ) Mari kita ikat fungsi ini.

Bagaimanakah saya boleh memastikan pengguna membuang plugin saya dengan selamat?

Untuk menyediakan pengalaman pengguna yang lengkap, plugin anda sepatutnya mampu membersihkan data yang telah dihasilkannya sendiri. Ini boleh dicapai dengan mendaftar sebuah “uninstall hook” (pautan pemusnahan). WordPress menyediakan dua cara untuk membuang plugin: register_uninstall_hook( FILE, ‘your_cleanup_function’ ) Fungsi yang telah didaftarkan ini akan dijalankan apabila pengguna mengklik butang “Padam” untuk plugin tersebut. Dalam fungsi ini, anda boleh menghapus dengan selamat semua pilihan pangkalan data yang dicipta oleh plugin, jadual pangkalan data yang disesuaikan, dan lain-lain. Sila perhatikan bahawa anda tidak sepatutnya menggunakan kaedah langsung untuk melakukan penghapusan tersebut. register_deactivation_hook Untuk melakukan pemadaman data secara kekal, kerana “menonaktifkan” tidak sama dengan “membuang” aplikasi tersebut.