Dari awal: Membina plugin WordPress pertama anda

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

Dari awal: Membina plugin WordPress pertama anda

Pembangunan plugin untuk WordPress merupakan cara utama untuk memperluas fungsi asas WordPress. Dengan mencipta plugin, pembangun dapat menambahkan ciri-ciri khusus kepada laman web tanpa perlu mengubah tema atau fail asas, yang memastikan kebebasan dan kebolehpindahan fungsi tersebut. Sebuah plugin standard biasanya terdiri daripada satu fail PHP utama, fail sumber yang boleh dipilih (seperti CSS, JavaScript), dan pakej bahasa. Memahami struktur asas sebuah plugin adalah langkah pertama yang penting untuk pembangunan yang berjaya.

Struktur asas dan penciptaan plugin WordPress.

Bentuk asas sebuah plugin adalah sesuatu yang diletakkan…/wp-content/plugins/Folder dalam direktori tersebut. Folder ini mesti mengandungi sekurang-kurangnya satu fail PHP utama, dan ulasan di bahagian atas fail tersebut digunakan untuk menyatakan maklumat plugin kepada WordPress.

Penulisan ulasan di bahagian kepala plugin

Setiap fail utama plugin mesti bermula dengan blok ulasan PHP yang khusus, yang dikenali sebagai “header plugin”. WordPress membaca maklumat ini untuk mengenal pasti dan memaparkan plugin anda dalam senarai plugin di panel pentadbiran. Contoh ulasan header yang standard adalah seperti berikut:

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

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

Di antaranya,Plugin NameIa adalah wajib, manakala bidang-bidang lain adalah pilihan. Namun, untuk kesempurnaan dan profesionalisme plugin tersebut, adalah disyorkan untuk mengisi semua bidang sebanyak mungkin.Text DomainDigunakan untuk pengeinternasionalan, dan merupakan asas bagi terjemahan plugin yang akan datang.

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.

Mencipta fail utama dan direktori untuk plugin

Pertama sekali,/wp-content/plugins/Cipta folder baru di bawah direktori, sepertimy-first-pluginKemudian, cipta fail PHP utama di dalam folder tersebut. Biasanya, fail tersebut akan mempunyai nama yang sama dengan folder itu sendiri.my-first-plugin.phpMasukkan ulasan di atas ke dalam fail tersebut, simpannya, dan kemudian anda akan dapat melihat serta mengaktifkannya di halaman “Pemalam” (Plugins) di bahagian belakang WordPress. Pada masa ini, ia tidak mempunyai sebarang fungsi.

Konsep Pembangunan Utama: Hook Aksi dan Penapis (Core Development Concepts: Action Hooks and Filters)

Arkitektur plugin WordPress dibina atas sistem “hook” (pautan), yang berfungsi sebagai jambatan antara plugin dan bahagian utama sistem (core). Hook terbahagi kepada dua kategori utama: action hook dan filter hook.

Mengerti dan menggunakan “action hooks”

Action hooks membenarkan anda menjalankan kod PHP yang dibuat khas pada titik masa tertentu atau apabila acara tertentu berlaku. Anda boleh menggunakannya untuk...add_action()Fungsi tersebut akan “memuatkan” fungsi anda ke dalam sebuah mekanisme tertentu (hook). Sebagai contoh, ia boleh menambahkan segmen teks secara automatik di akhir kandungan artikel.

function myplugin_add_footer_text( $content ) {
    if ( is_single() ) {
        $content .= '<p>Terima kasih kerana membaca!</p>';
    }
    return $content;
}
add_filter( 'the_content', 'myplugin_add_footer_text' );

Perhatikan, contoh ini sebenarnya menggunakan “filter hook” untuk mengubah kandungan. Sebuah contoh klasik penggunaan “action hook” adalah untuk menambah menu dalam panel pentadbiran (management backend).

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

function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',
        '我的插件',
        'manage_options',
        'myplugin-settings',
        'myplugin_settings_page'
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

Di sini,add_action()“Convert function”myplugin_add_admin_menuTerkait denganadmin_menuHook ini akan dipanggil oleh WordPress semasa membina menu latar belakang (backend menu).

Mengerti dan menggunakan filter hooks

Filter hooks digunakan untuk mengubah data yang dihasilkan oleh WordPress semasa proses pemprosesan. Anda boleh menggunakannya…add_filter()Fungsi yang digunakan untuk memuatkan (mount) fungsi anda. Fungsi penapisan (filter function) menerima nilai masukan, mengubahnya, dan kemudian harus mengembalikan nilai yang telah diubah. Sebagai contoh, mengubah tajuk artikel:

function myplugin_modify_title( $title ) {
    return '精选: ' . $title;
}
add_filter( 'the_title', 'myplugin_modify_title' );

Penapis tersebut sangat berkuasa dan sering digunakan untuk mengubah hasil carian, kandungan teks, nilai pilihan, serta hampir semua data yang dihasilkan oleh WordPress.

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

Tambahkan halaman tetapan dan pilihan untuk plugin tersebut.

Sebuah plugin yang lengkap dengan ciri-ciri yang diperlukan biasanya perlu menyediakan pilihan konfigurasi untuk pengguna. WordPress menyediakan API pengaturan untuk membuat halaman pilihan tersebut dengan cara yang selamat dan standard.

Membuat menu pengurusan dan halaman

Pertama sekali, anda perlu menggunakanadd_menu_page()add_options_page()Kita menggunakan fungsi-fungsi seperti ini untuk menambahkan halaman pengurusan. Biasanya, operasi ini akan disambungkan (dimalunkan/mount) ke sistem yang sesuai.admin_menuPada kait itu, seperti yang ditunjukkan dalam contoh sebelumnya. Di dalamnya,myplugin_settings_pageIni adalah sebuah fungsi panggilan balik (callback function) yang digunakan untuk merender kandungan HTML halaman tetapan (settings page).

Gunakan API Settings untuk mendaftar pilihan.

API Tetapan menyediakan cara yang selamat untuk mendaftar, mengesahkan, dan menyimpan tetapan. Langkah-langkah utamanya termasuk: menggunakanregister_setting()Daftar sebuah kumpulan tetapan, dan gunakannya.add_settings_section()Tambahkan sebuah blok tetapan, dan gunakannya.add_settings_field()Tambahkan bidang tetapan yang khusus.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan lengkap untuk pembangunan plugin WordPress: dari pemula hingga mahir, tutorial praktikal.

function myplugin_settings_init() {
    // 注册一个设置
    register_setting( 'myplugin_settings', 'myplugin_options' );

    // 添加一个设置区块
    add_settings_section(
        'myplugin_section_general',
        '通用设置',
        'myplugin_section_general_cb',
        'myplugin-settings'
    );

    // 添加一个设置字段
    add_settings_field(
        'myplugin_field_text',
        '欢迎语',
        'myplugin_field_text_cb',
        'myplugin-settings',
        'myplugin_section_general',
        [ 'label_for' => 'myplugin_field_text' ]
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

Kemudian, anda perlu menulis fungsi panggilan balik (callback function) yang sesuai.myplugin_section_general_cbmyplugin_field_text_cb来输出区块描述和字段的HTML输入框。最后,在myplugin_settings_pageDalam fungsi, digunakansettings_fields()do_settings_sections()Fungsi ini digunakan untuk mengeluarkan seluruh kandungan borang.

Keselamatan plugin dan amalan terbaik.

Ketika membangunkan plugin, keselamatan merupakan faktor utama yang perlu diambil kira. Sebuah plugin yang tidak selamat boleh membahayakan seluruh laman web.

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.

Pemverian data, pembersihan data, dan pengekstrakan karakter khusus (escape)

Jangan pernah mempercayai data yang dimasukkan oleh pengguna atau data yang berasal dari pangkalan data. Semua input (seperti $_POST, $_GET) mesti disahkan dan dibersihkan sebelum diproses. WordPress menyediakan banyak fungsi untuk membantu proses ini.sanitize_text_field(), intval(), wp_kses()Dan sebagainya. Semasa mengeluarkan data ke dalam HTML atau JavaScript, proses pengelakkan kesilapan (escape) adalah perlu, dan fungsi seperti… (functions such as…) harus digunakan.esc_html(), esc_attr(), esc_js()wp_json_encode()

// 接收、清理并保存数据
$user_input = sanitize_text_field( $_POST['my_field'] );
update_option( 'my_option', $user_input );

// 安全地输出数据
echo esc_html( get_option( 'my_option' ) );

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

Untuk semua permintaan borang latar belakang atau permintaan AJAX yang dijalankan oleh plugin, pengesahan menggunakan nonce dari WordPress adalah wajib untuk memastikan kesahihan dan keunikan permintaan tersebut, serta untuk mencegah serangan penipuan jenis cross-site request forgery (CSRF). Pada masa yang sama, gunakan…current_user_can()Fungsi tersebut memeriksa sama ada pengguna semasa mempunyai hak yang diperlukan untuk menjalankan operasi tersebut.

// 在表单中输出 nonce 字段
wp_nonce_field( 'myplugin_action', 'myplugin_nonce' );

// 在处理请求时验证 nonce 和权限
function myplugin_handle_form_submit() {
    if ( ! isset( $_POST['myplugin_nonce'] ) ||
         ! wp_verify_nonce( $_POST['myplugin_nonce'], 'myplugin_action' ) ||
         ! current_user_can( 'manage_options' ) ) {
        wp_die( '安全校验失败。' );
    }
    // ... 安全地处理数据 ...
}

RINGKASAN

Pembangunan plugin untuk WordPress merupakan sebuah proses yang sistematik, bermula dengan memahami struktur asas dan mekanisme “hook” (pautan antara komponen sistem), seterusnya melaksanakan fungsi-fungsi tertentu dan mencipta antara muka pengguna (user interface), serta mesti mematuhi amalan keselamatan yang ketat sepanjang proses pembangunan. Dengan mengikuti standard pengkodan WordPress dan memanfaatkan sepenuhnya API yang disediakan, pembangun dapat mencipta plugin yang kuat, selamat, dan mudah diselenggara. Kuncinya adalah mengintegrasikan fungsi khusus ke dalam kitaran hidup (lifecycle) WordPress melalui mekanisme “action” dan “filter” dengan lancar, serta menggunakan API Settings untuk mengurus konfigurasi. Pada masa yang sama, pengesahan data, pembersihan data, proses pengelakkan serangan (data escaping), dan pemeriksaan hak akses perlu sentiasa diutamakan.

FAQ - Soalan Lazim

###: Bagaimana untuk membaiki (debug) plugin WordPress saya?
Langkah pertama adalah untuk mengaktifkan mod pembangunan (debug mode) pada WordPress.wp-config.phpDalam fail tersebut, akan…WP_DEBUGKonstanta ditetapkan kepadatrue. Ini akan memaparkan ralat PHP, amaran dan notis terus pada halaman. Untuk penyahpepijat yang lebih kompleks, anda boleh menggunakanerror_log()Fungsi tersebut akan merekod maklumat ke dalam log ralat pada pelayan, atau menggunakan plugin pembangunan khusus untuk melihat butiran seperti pertanyaan (query) dan fungsi pengaitan (hook) dengan lebih terperinci.

Bagaimanakah saya boleh menjadikan plugin saya menyokong berbilang bahasa?

WordPress menggunakan rangka kerja GNU gettext untuk melaksanakan fungsi internasionalisasi (penyesuaian aplikasi untuk bahasa yang berbeza). Pertama sekali, definisi perlu dibuat dalam nota di bahagian atas kod plugin (plugin header comments).Text DomainDalam kod plugin, gunakan pendekatan berikut untuk semua rentetan teks yang perlu diterjemahkan:__()Terjemahkan:_e()Terjemahkan dan keluarkan terus. Kemudian, gunakan alat seperti Poedit untuk mengekstrak rentetan teks daripada kod sumber plugin dan menjadikannya..potFail templat, kemudian buat yang sesuai untuk setiap bahasa..poDan selepas dikompilasi..moFail tersebut, kemudian letakkan dalam plugin./languages/Dalam direktori tersebut.

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

Untuk mengelakkan konflik antara nama kelas, nama fungsi, atau nama常an, amalan terbaik adalah dengan menggunakan ruang nama (namespace) atau menambahkan prefiks unik kepada semua penanda (identifier). Mulai dari PHP 5.3, penggunaan ruang nama disyorkan. Sebagai contoh:namespace MyPluginAdmin;Jika keserasian diambil kira, maka penggunaan prefiks adalah wajib, dan prefiks tersebut harus cukup unik. Sebagai contoh, gabungan singkatan nama syarikat dan nama plugin boleh digunakan:function acme_myplugin_init() {}Nama kelas ditakrifkan sebagai…class Acme_MyPlugin_Admin_Settings {}

Bagaimana untuk menambahkan jadual pangkalan data khusus ke dalam plugin saya?

Masa terbaik untuk membuat jadual khusus (custom table) adalah ketika plugin diaktifkan. Anda boleh mengumpulkan kod untuk membuat jadual tersebut dalam satu fungsi, dan kemudian menggunakannya melalui...register_activation_hook()Gunakan fungsi untuk pendaftaran. Di dalam fungsi tersebut, lakukan proses yang diperlukan.dbDelta()Fungsi ini digunakan untuk membuat atau mengemas kini struktur jadual dengan selamat, dan ia memerlukan penggunaan format SQL yang sangat spesifik. Pastikan anda menggunakan format yang betul.$wpdb->prefixTambahkan prefiks laman web pada nama jadual untuk menyokong persekitaran pelbagai laman web.