Pembangunan Plugin WordPress, daripada pemula hingga mahir: Panduan lengkap untuk membina fungsi khusus.

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

Membina persekitaran pembangunan untuk plugin WordPress

Sebelum mula menulis kod, memiliki persekitaran pembangunan yang stabil dan profesional merupakan langkah pertama ke arah kejayaan. Ini bukan sahaja dapat meningkatkan kecekapan pengaturcaraan anda, tetapi juga memastikan keserasian plugin dalam pelbagai persekitaran. Keperluan asas adalah untuk memasang persekitaran operasi WordPress setempat, dan anda boleh memilih alat seperti XAMPP, MAMP, Local by Flywheel, atau Docker. Alat-alat ini akan membantu anda mengkonfigurasi PHP, MySQL, dan pelayan Apache/Nginx dengan satu klik sahaja.

Seterusnya adalah pemilihan editor kod. Walaupun mana-mana editor teks boleh digunakan untuk menulis kod, penggunaan editor yang direka khusus untuk pembangunan atau persekitaran pembangunan terintegrasi (IDE) akan membuatkannya lebih efisien. Visual Studio Code,PhpStorm, atau Sublime Text semuanya merupakan pilihan yang baik, kerana mereka menyediakan ciri-ciri seperti penyorotan kod, cadangan pintar, dan alat untuk membetulkan ralat sintaks (debugging), yang dapat mengurangkan kesilapan sintaks dengan ketara.

Satu amalan yang sangat penting adalah mengaktifkan mod pembangunan (debug mode) di WordPress. Ini membolehkan anda melihat ralat, amaran, dan notis dalam masa nyata semasa proses pembangunan, bukan hanya halaman kosong. Anda perlu mengaktifkannya pada laman web anda.wp-config.phpKonfigurasi dilakukan dalam fail tersebut. Cari definisi yang berkaitan.WP_DEBUGBaris yang mengandungi konstanta, tetapkan ia sebagai…true

Diperoleh daripada WEB\nDisyorkan untuk membaca. Dari pemula hingga mahir: Panduan lengkap untuk pembangunan plugin WordPress.

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // 将错误记录到 /wp-content/debug.log 文件
define( 'WP_DEBUG_DISPLAY', false ); // 不建议在页面上直接显示错误

Selain itu, mencipta sebuah repositori sistem kawalan versi (seperti Git) untuk projek plugin anda juga merupakan amalan terbaik. Ini akan membantu anda mengesan perubahan pada kod, memudahkan proses pemulihan (rollback), dan meningkatkan kerjasama antara ahli pasukan.

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.

Memahami struktur asas plugin

Sebuah plugin WordPress yang paling asas boleh terdiri daripada hanya satu fail sahaja, tetapi demi kemudahan penyelenggaraan dan kejelasan, kita biasanya menggunakan direktori yang teratur. Fail pintu masuk (entry file) untuk plugin adalah penting, dan namanya harus sama dengan nama fail utama plugin tersebut.my-awesome-plugin.phpPada bahagian atas fail ini, mesti terdapat sebuah komen header maklumat plugin yang standard, di mana WordPress menggunakan maklumat tersebut untuk mengenal pasti plugin anda.

<?php
/**
 * Plugin Name:       我的超棒插件
 * Plugin URI:        https://example.com/my-awesome-plugin
 * Description:       这是一个为WordPress添加定制化功能的插件。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-awesome-plugin
 * Domain Path:       /languages
 */

Selepas nota kepala ini, anda boleh mula menulis kod fungsi utama bagi plugin tersebut. Untuk plugin yang ringkas, semua kod boleh ditulis dalam fail yang sama. Namun, bagi plugin yang kompleks, amalan yang lebih baik adalah untuk memodulkan kod tersebut dan mengagarkannya ke dalam direktori-subdirektori yang berbeza./includesDigunakan untuk menyimpan perpustakaan kelas utama dan fungsi-fungsi./adminKod yang digunakan untuk antara muka pengurusan belakang (backend management interface)./publicUntuk logik bahagian hadapan (front-end logic)./assetsDigunakan untuk menyimpan sumber JavaScript, CSS, dan gambar.

Konsep utama: Tindakan (Actions), Penapis (Filters), dan Kod Pendek (Short Codes)

Inti pembangunan plugin WordPress adalah pemahaman terhadap arkitektur berbasis acara (event-driven architecture), yang terutamanya dilaksanakan melalui Action Hooks dan Filter Hooks. Kedua-duanya berfungsi sebagai jambatan antara plugin WordPress dan bahagian inti sistem (core).

Mengerti dengan mendalam tentang “action hooks”

Hook untuk tindakan membenarkan anda “menyisipkan” kod anda sendiri pada titik masa tertentu semasa WordPress dijalankan. Anda boleh “memasang” fungsi khusus pada hook tersebut, dan apabila WordPress mencapai titik masa tersebut, fungsi anda akan dijalankan. Sebagai contoh,wp_headAksinya berada pada halaman web.<head>Sebahagian daripada kandungan akan diaktifkan (dipaparkan) apabila proses pengeluaran (output) hampir selesai.admin_menuTindakan ini dilaksanakan semasa membina menu pengurusan latar belakang (backend management menu).

Diperoleh daripada WEB\nDisyorkan untuk membaca. Belajar membangunkan plugin WordPress daripada awal: Pelaksanaan fungsi lanjutan dan panduan amalan terbaik.

Gunakanadd_action()Fungsi ini digunakan untuk memuatkan (mount) fungsi anda. Sintaks asasnya adalah:add_action( $hook_name, $callback_function, $priority, $accepted_args );Berikut adalah contoh yang mudah: menambahkan segmen teks yang disesuaikan selepas tajuk halaman artikel.

function myplugin_add_subtitle( $title ) {
    if ( is_single() ) {
        $title .= ' - 欢迎阅读!';
    }
    return $title;
}
add_action( 'the_title', 'myplugin_add_subtitle' );

Menguasai penggunaan filter hooks

Hook untuk penapis (filter hooks) adalah serupa dengan hook untuk tindakan (action hooks), tetapi tujuannya berbeza: ia digunakan untuk mengubah data. Sebelum WordPress menggunakan data tertentu (seperti kandungan artikel, tajuk, atau ringkasan), data tersebut akan melalui satu proses penapisan. Plugin anda boleh “menapis” data tersebut, mengubahnya, dan kemudian mengembalikan nilai yang baru.the_contentPenapis membolehkan anda menyunting kandungan artikel.

Gunakanadd_filter()Fungsi untuk menambahkan penapis. Sintaksnya adalah…add_action()Sama. Contoh di bawah akan menambahkan kenyataan hak cipta secara automatik di akhir semua kandungan artikel.

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%.
function myplugin_add_copyright( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $content .= '<p class="copyright">Hak cipta artikel ini milik laman web ini.</p>';
    }
    return $content;
}
add_filter( 'the_content', 'myplugin_add_copyright' );

Mencipta dan menggunakan kod pendek

Shortcode merupakan alat yang sangat berguna yang membolehkan pengguna dengan mudah memasukkan kandungan dinamik daripada plugin ke dalam artikel atau halaman web. Ia menggunakan tag kurungan sederhana, seperti [ ] untuk menentukan penggunaan kod tersebut.[my_gallery]Anda boleh menggunakan…add_shortcode()Fungsi untuk mendaftar kod pendek.

Fungsi ini menerima dua parameter: nama tag kod ringkas (tanpa kurung siku) dan fungsi panggil balik (callback function) yang bersesuaian. Fungsi panggil balik boleh menerima atribut (attributes) dan kandungan yang terkurung (enclosed content) sebagai parameter. Berikut adalah contoh kod ringkas yang digunakan untuk menunjukkan masa semasa.

function myplugin_current_time_shortcode( $atts, $content = null ) {
    // 使用 shortcode_atts 设置默认属性并合并用户输入
    $atts = shortcode_atts( array(
        'format' => 'Y-m-d H:i:s',
    ), $atts, 'current_time' );

// 返回处理后的内容
    return date( $atts['format'] );
}
add_shortcode( 'current_time', 'myplugin_current_time_shortcode' );

Pengguna boleh memasukkan kandungan dalam editor.[current_time format="F j, Y"]Tampilkan masa dalam format yang ditentukan.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan Utama untuk Membangunkan Ekstensi WooCommerce: Dari Pemula hingga Pakar dalam Membina Plugin E-dagang Tersuai

Membina antaramuka pengurusan latar belakang untuk plugin

Mencipta halaman tetapan belakang yang jelas dan mudah digunakan untuk plugin anda adalah kunci untuk menyediakan pengalaman pengguna yang profesional. WordPress menyediakan API yang kaya untuk memudahkan proses ini.

Tambah menu pengurusan tahap atas

Untuk membuat halaman menu belakang yang berasingan untuk plugin anda, anda perlu menggunakanadd_menu_page()Fungsi. Fungsi ini biasanya digunakan dalam...admin_menuIa dipanggil dalam pengait tindakan (action hook). Ia mendefinisikan tajuk menu, kebenaran akses, slug URL yang unik, fungsi panggilan balik (callback function) yang dipaparkan, serta ikon-ikon yang digunakan.

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 myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',           // 页面标题
        '我的插件',               // 菜单标题
        'manage_options',         // 所需权限(管理员)
        'myplugin-settings',      // 菜单slug
        'myplugin_settings_page', // 显示页面内容的回调函数
        'dashicons-admin-generic', // 图标(Dashicons)
        80                        // 菜单位置
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

Seterusnya, anda perlu mendefinisikan fungsi panggilan balik (callback function) yang dinyatakan di atas.myplugin_settings_pageKandungan fungsi ini bertanggungjawab untuk menghasilkan kod HTML untuk halaman tetapan.

Menggunakan API tetapan untuk membuat halaman pilihan

Mengurus penghantaran dan pengesahan borang secara manual adalah proses yang memakan masa dan tidak selamat. API Tetapan (Settings API) WordPress membantu mengautomasikan proses-proses ini, termasuk pemeriksaan bidang yang tidak berkaitan dengan konfigurasi (non-ce fields), pemeriksaan hak akses (permission checks), dan penyimpanan data.

Membuat halaman tetapan biasanya melibatkan empat langkah: mendaftar tetapan, menambah blok tetapan, mendaftar medan dalam blok tersebut, dan akhirnya merender borang dalam fungsi panggilan balik (callback function) halaman. Pertama sekali,admin_initDaftarkan tetapan anda dalam “hook”.

function myplugin_settings_init() {
    // 1. 注册一个新设置(选项组名, 选项名, 清理回调)
    register_setting( 'myplugin_settings_group', 'myplugin_options' );

// 2. 添加一个设置区块
    add_settings_section(
        'myplugin_section_basic',
        '基础设置',
        'myplugin_section_basic_callback',
        'myplugin-settings' // 页面slug
    );

// 3. 在区块内添加字段
    add_settings_field(
        'myplugin_field_api_key',
        'API密钥',
        'myplugin_field_api_key_callback',
        'myplugin-settings',
        'myplugin_section_basic'
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

Kemudian, anda perlu mendefinisikan fungsi panggil balik (callback function) untuk setiap bidang (field).myplugin_field_api_key_callbackUntuk merender kotak masukan sebenar, dan daripada…myplugin_optionsMendapatkan nilai yang telah disimpan daripada array.

function myplugin_field_api_key_callback() {
    $options = get_option( 'myplugin_options' );
    $value = isset( $options['api_key'] ) ? $options['api_key'] : '';
    echo '<input type="text" name="myplugin_options[api_key]" value="' . esc_attr( $value ) . '" class="regular-text">';
}

Akhir sekali, gunakankannya dalam fungsi panggilan balik (callback function) halaman.settings_fields()do_settings_sections()Outputkan borang yang lengkap.

Keamanan, pengoptimuman, dan pengeluaran plugin

Setelah pembangunan selesai, ia tidak bermakna kerja telah berakhir. Memastikan keselamatan dan kecekapan plugin, serta membuat persiapan yang lengkap untuk pelancaran, juga sangat penting.

Melaksanakan amalan terbaik keselamatan

Keselamatan merupakan nyawa dalam pembangunan plugin. Prinsip utama adalah: Jangan pernah percaya pada input pengguna. Berhati-hati dengan semua data yang datang dari pengguna atau sumber luar.$_GET$_POST$_REQUESTProses pengesahan, pembersihan, dan pengekstrakan (escaping) dilakukan terlebih dahulu.

  • Pengesahan (Validation): Memeriksa jika data memenuhi format, jenis atau julat yang dijangka (contohnya, jika ia merupakan alamat e-mel, atau nombor). Ini boleh dilakukan dengan menggunakanfilter_var()preg_match()Fungsi.
  • Sanitization: Sebelum data disimpan ke dalam pangkalan data, karakter-karakter yang tidak selamat perlu dihapuskan. WordPress menyediakan banyak fungsi sanitization, seperti…sanitize_text_field()sanitize_email()sanitize_key()
  • Escaping: Apabila mengeluarkan data daripada pangkalan data ke pelayar, pastikan karakter khas seperti HTML telah dikodkan dengan selamat untuk mengelakkan serangan XSS. Gunakan fungsi sepertiesc_html()esc_attr()esc_url()wp_kses_post()

Selain itu, semasa menguruskan hak akses, sentiasa gunakan…current_user_can()Dan kebenaran standard yang ditetapkan oleh WordPress (seperti…)manage_optionsedit_postsUntuk memeriksa sama ada pengguna semasa mempunyai hak untuk melakukan sesuatu operasi, gunakan fungsi yang disediakan oleh WordPress terlebih dahulu. Apabila melibatkan pertanyaan pangkalan data, adalah lebih baik menggunakan fungsi-fungsi terbina dalam WordPress.WP_Queryget_postsJika penggunaan SQL asli adalah mustahil, pastikan untuk menggunakannya dengan berhati-hati dan hanya apabila benar-benar perlu.$wpdb->prepare()Lakukan persiapan parameter untuk mencegah serangan SQL injection.

Mengoptimumkan prestasi

Plugin yang tidak efisien boleh melambatkan keseluruhan laman web. Pengoptimuman boleh dilakukan dari beberapa aspek: elakkan menjalankan banyak kueri atau pengiraan yang kompleks setiap kali halaman dimuat, dan gunakan API Cache Transient WordPress dengan bijak untuk menyimpan data sementara.set_transient()get_transient()Hasil daripada operasi yang memakan masa boleh disimpan dalam cache dengan mudah.

Pastikan fail JavaScript dan CSS anda hanya dimuatkan pada halaman-halaman yang diperlukan. Gunakan kaedah yang sesuai semasa proses pendaftaran dan penyisipan skrip.wp_enqueue_script()wp_enqueue_style()Dan tetapkan kebergantungan serta syarat pengambilan (loading conditions) dengan betul. Bagi skrip latar belakang (background scripts), ia boleh disambungkan (mounted) ke sistem yang sesuai.admin_enqueue_scriptsHook; untuk skrip front-end, ia akan dipasang (dihang) ke dalam sistem.wp_enqueue_scriptsKuku.

Sedia untuk diterbitkan dalam direktori rasmi.

Jika anda ingin menghantar plugin anda ke direktori plugin rasmi WordPress.org, terdapat beberapa syarat yang perlu dipenuhi. Pastikan kod anda mematuhi standard pengaturcaraan WordPress; anda boleh menggunakan alat PHP_CodeSniffer untuk memeriksa kod tersebut. Selain itu, tambahkan sokongan antarabangsa (internationalization) yang lengkap kepada plugin anda.__()_e()Fungsi seperti ini mengelilingi semua rentetan teks yang kelihatan kepada pengguna, dan mengaturnya dengan betul.Text DomainDomain Path

Mencipta satu yang terperinci.readme.txtFail tersebut harus mematuhi format yang ditetapkan oleh WordPress, dan perlu mengandungi deskripsi tentang plugin, langkah-langkah pemasangan, soalan-soalan yang sering diajukan, log pembaruan, dan lain-lain. Ini merupakan dokumen utama yang akan dilihat oleh pengguna dalam direktori plugin. Akhir sekali, lakukan ujian yang menyeluruh terhadap plugin anda, termasuk ujian keserasian pada pelbagai versi PHP, versi WordPress, serta dalam persekitaran di mana tema yang berbeza dan plugin lain telah diaktifkan.

RINGKASAN

Pembangunan plugin WordPress adalah proses mengubah idea menjadi ciri-ciri fungsional, yang dibina atas pemahaman terhadap arkitektur asas WordPress. Bermula dengan membina persekitaran pembangunan tempatan yang profesional, anda dapat memperluas keupayaan WordPress dengan menguasai tiga mekanisme interaksi utama iaitu action hooks, filter hooks, dan shortcodes. Selanjutnya, dengan menggunakan API pengaturan, anda boleh membuat antara muka pengurusan plugin yang profesional dan selamat. Akhirnya, dengan melaksanakan amalan terbaik keselamatan, mengoptimumkan prestasi, dan mengikuti garis panduan penerbitan, plugin anda akan berkembang dari projek peribadi menjadi produk yang boleh berkhidmat kepada ramai pengguna WordPress. Pembelajaran berterusan, membaca kod sumber WordPress dan kod sumber plugin yang berkualiti tinggi, adalah cara terbaik untuk meningkatkan kemahiran pembangunan anda.

FAQ - Soalan Lazim

Apakah pengetahuan asas yang diperlukan untuk membangunkan plugin WordPress?

Anda perlu memiliki pengetahuan asas tentang HTML, CSS, PHP, dan JavaScript. Di antaranya, PHP adalah yang paling penting kerana WordPress sendiri ditulis menggunakan PHP. Pemahaman asas tentang pangkalan data MySQL, serta kebiasaan dengan konsep-konsep asas WordPress (seperti artikel, halaman, kategori, dan peranan pengguna) akan sangat membantu.

Bagaimana untuk men-debug plugin WordPress saya?

Cara yang paling berkesan adalah dengan mengaktifkan WP_DEBUG. Seperti yang dinyatakan dalam artikel tersebut,wp-config.phpDi dalam pengaturandefine(‘WP_DEBUG’, true);Mesej ralat akan dipaparkan pada skrin atau direkodkan.debug.logDalam fail tersebut. Selain itu, ia boleh digunakan.error_log()Fungsi tersebut mengeluarkan maklumat pembaikan (debugging information) yang disesuaikan, atau menggunakan alat pembaikan profesional seperti Xdebug bersama-sama dengan IDE untuk melakukan pembaikan melalui titik henti (breakpoint debugging).

Bagaimana plugin saya boleh kompatibel dengan tema atau plugin lain?

Untuk memaksimumkan keserasian, plugin anda harus mengikuti standard pengkodan dan amalan terbaik WordPress sebanyak mungkin. Elakkan menggunakan pemboleh ubah atau nama fungsi global yang mungkin menyebabkan konflik (sebaiknya gunakan kelas atau awalan yang unik). Gunakan hook standard untuk menambahkan ciri-ciri, bukan mengubah fail asas WordPress secara langsung. Jika boleh, sediakan filter yang membenarkan pembangun lain untuk mengubah output atau tingkah laku plugin anda.

Bagaimanakah saya harus menambahkan sokongan pelbagai bahasa untuk plugin saya?

Untuk menambahkan sokongan terjemahan antarabangsa (i18n) kepada plugin, anda perlu menggunakan fungsi terjemahan yang disediakan oleh WordPress. Pertama sekali, gunakan…__()_e()Fungsi seperti ini mengelilingi semua rentetan teks yang kelihatan kepada pengguna. Kemudian, tetapkan pengaturan yang betul di bahagian atas fail utama plugin.Text DomainDomain PathAkhir sekali, gunakan alat seperti Poedit untuk menghasilkannya..potFile-file templat, yang mana penterjemah boleh menggunakannya untuk mencipta teks dalam pelbagai bahasa..po.moDokumen.

Apakah sebab-sebab biasa mengapa permohonan penyerahan plugin ke WordPress.org ditolak?

Sebab-sebab yang biasa termasuk: kelemahan keselamatan (seperti input pengguna yang tidak disahkan dan tidak dielakkan), pelanggaran garis panduan direktori plugin (seperti mengandungi pautan berbayar atau kod yang dienkripsi), kualiti kod yang rendah (dengan banyak ralat atau amaran), serta fungsi yang sama dengan plugin sedia ada tanpa peningkatan yang ketara.readme.txtFail tersebut tidak memenuhi spesifikasi yang ditetapkan, atau plugin tersebut menggunakan lesen yang tidak dibenarkan. Sebelum menghantar fail tersebut, pastikan anda membaca panduan rasmi dengan teliti dan melakukan pemeriksaan menyeluruh terlebih dahulu.