Preparasi dan pembinaan persekitaran.
Sebelum anda mula menulis kod, anda memerlukan persekitaran pembangunan yang sesuai. Ini termasuk pemasangan WordPress secara lokal, editor kod, serta pengetahuan asas tentang PHP. XAMPP, MAMP, atau Local by Flywheel disyorkan untuk membina persekitaran WordPress lokal dengan cepat. Pastikan bahawa versi PHP yang anda gunakan memenuhi keperluan rasmi WordPress, iaitu PHP 7.4 atau lebih tinggi.
Sebuah plugin pada dasarnya terdiri daripada satu atau lebih fail PHP, yang diletakkan di dalam direktori WordPress.wp-content/pluginsSetiap plugin dalam direktori tersebut mesti mempunyai nama yang unik, dan bahagian atas fail utamanya perlu mengandungi ulasan maklumat plugin yang standard. Ini merupakan asas bagi WordPress untuk mengenal pasti plugin tersebut.
Cipta fail plugin pertama anda.
Pertama sekali,wp-content/pluginsCipta sebuah folder baru dalam direktori tersebut, sebagai contoh…my-first-pluginKemudian, cipta fail PHP utama di dalam folder tersebut; biasanya namanya sama dengan nama folder itu sendiri.my-first-plugin.phpDalam fail ini, anda perlu menulis maklumat kepala untuk plugin tersebut.
Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan Lengkap Pembangunan Plugin WordPress: Membina Plugin Pertama Anda Dari Kosong。
<?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
*/ Setelah menyimpan fail tersebut, masuk ke halaman “Pemasangan” (Plugins) di panel pentadbiran WordPress. Anda sepatutnya dapat melihat “My First Plugin” dalam senarai pemasangan. Aktifkan plugin tersebut. Walaupun ia belum mempunyai sebarang fungsi, ini menandakan bahawa plugin anda telah berjaya dimuatkan oleh WordPress.
Memahami Mekanisme Asas WordPress: Hook dan Filter
Kekuatan kebolehluasan WordPress terletak pada arkitekturnya yang berdasarkan pengendalian acara (event-driven), dengan komponen utamanya adalah “Hook”. Hook terbahagi kepada dua jenis: Action dan Filter. Memahami kedua-duanya adalah kunci untuk mengembangkan plugin yang berkesan.
Action hooks membenarkan anda untuk menyisipkan dan menjalankan kod anda pada masa-masa tertentu, seperti ketika artikel diterbitkan atau halaman dimuat. Sebagai contoh, anda boleh menghantar e-mel apabila sebuah artikel diterbitkan. Anda boleh menggunakan action hooks untuk melakukan tindakan tersebut.add_action()Fungsi tersebut akan memuatkan fungsi khusus yang anda buat ke dalam pengait tindakan (action hook) yang ditentukan.
Hook filter membenarkan anda mengubah data. Sebelum data tersebut digunakan (seperti disimpan ke dalam pangkalan data atau dipaparkan di dalam pelayar), anda boleh menghalang dan mengubahnya. Sebagai contoh, anda boleh mengubah tajuk artikel atau kandungan ulasan. Anda boleh menggunakan…add_filter()Fungsi ini digunakan untuk mengaplikasikan penapis (filter).
Gunakan pengait tindakan untuk menambah fungsi
Bayangkan kita ingin menambahkan satu baris teks khusus di bahagian kaki (footer) halaman pentadbiran laman web. WordPress menyediakan sebuah alat yang bernama…admin_footerKita boleh menambahkan kod berikut ke dalam fail utama plugin untuk mengaktifkan fungsi pengait tindakan (action hook).
Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan untuk pemula dalam pembangunan plugin WordPress: Membina plugin pertama anda dari awal.。
// 定义一个在管理后台页脚显示信息的函数
function myplugin_display_admin_footer_text() {
echo '<p>Terima kasih kerana menggunakan “My First Plugin”!</p>';
}
// 将函数挂载到 admin_footer 动作钩子
add_action( 'admin_footer', 'myplugin_display_admin_footer_text' ); Simpan fail tersebut dan kemudian refresh halaman admin WordPress. Gulung ke bahagian bawah halaman (footer), dan anda sepatutnya dapat melihat teks yang telah ditambahkan. Itulah aplikasi asas dari “action hook”: mengeluarkan kod pada lokasi tertentu dalam proses pengurusan WordPress.
Menggunakan penapis untuk mengubah kandungan
Sekarang, mari kita cuba mengubah semua tajuk artikel dengan menambahkan simbol jenama pada akhir setiap tajuk secara seragam. Kita boleh menggunakan…the_titlePenapis.
// 定义一个修改文章标题的函数
function myplugin_modify_post_title( $title, $post_id ) {
// 确保只在主循环且非管理后台中修改
if ( ! is_admin() && in_the_loop() ) {
$title = $title . ' ™';
}
return $title;
}
// 将函数挂载到 the_title 过滤器钩子,参数2表示接受2个参数
add_filter( 'the_title', 'myplugin_modify_post_title', 10, 2 ); Kod ini akan memeriksa sama ada persekitaran semasa berada dalam gelung utama artikel di bahagian hadapan (frontend). Jika ya, simbol “™” akan ditambahkan selepas tajuk.10Ia merupakan keutamaan (semakin kecil nombor tersebut, semakin awal ia akan dijalankan).2Ini bermakna fungsi kita menerima dua parameter (yang asal).$title和$post_id)。
Membina ciri tambahan (plugin): Mencipta menu pengurusan dan halaman tetapan
Sebuah plugin yang matang biasanya memerlukan pilihan konfigurasi yang disediakan di bahagian belakang (backend) WordPress. Ini melibatkan penciptaan halaman menu pengurusan khusus untuk plugin tersebut. WordPress menyediakan pelbagai fungsi API untuk mencapai fungsi ini, sebagai contoh…add_menu_page()和add_options_page()。
Tambah menu pengurusan tahap atas
Kita akan menambahkan menu utama yang berasingan untuk plugin tersebut. Ini biasanya dilakukan…admin_menuTugas tersebut telah selesai dalam fungsi “action hook”. Kita akan membuat sebuah fungsi untuk mendefinisikan menu dan halaman.
// 定义添加管理菜单的函数
function myplugin_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限(管理员)
'myplugin-settings-page', // 菜单slug(唯一标识)
'myplugin_display_settings_page', // 用于显示页面内容的回调函数
'dashicons-admin-generic', // 菜单图标(Dashicons)
30 // 菜单位置
);
}
// 将函数挂载到 admin_menu 钩子
add_action( ‘admin_menu’, ‘myplugin_add_admin_menu’ ); Seterusnya, kita perlu mendefinisikan fungsi panggilan balik (callback function).myplugin_display_settings_page()Untuk merender kandungan HTML halaman tetapan.
Diperoleh daripada WEB\nDisyorkan untuk membaca. Pembangunan Plugin WordPress: Panduan Lengkap Dari Permulaan Hingga Kemahiran Tinggi – Membina Fungsi Khusus Sendiri。
// 定义设置页面的显示内容
function myplugin_display_settings_page() {
?>
<div class="wrap">
<h1>Tetapan-tetapan plugin saya</h1>
<form method="post" action="/ms/options.php/" data-trp-original-action="options.php">
<?php
// 输出设置字段、安全nonce等
settings_fields( ‘myplugin_settings_group’ );
do_settings_sections( ‘myplugin-settings-page’ );
submit_button();
?>
<input type="hidden" name="trp-form-language" value="ms"/></form>
</div>
<?php
} Pengaturan pendaftaran, bidang data, dan pembahagian (partitioning)
Untuk mengendalikan data borang dengan selamat, kita perlu menggunakan API tetapan WordPress. Ini termasuk proses pendaftaran tetapan, menambahkan zon dan bidang tetapan.
// 初始化插件设置
function myplugin_settings_init() {
// 1. 注册一个设置(存储在wp_options表中)
register_setting(
‘myplugin_settings_group’, // 设置组名,与 settings_fields() 对应
‘myplugin_options’ // 存储在数据库中的选项名
);
// 2. 添加一个设置分区
add_settings_section(
‘myplugin_section_basic’, // 分区ID
‘基础设置’, // 分区标题
‘myplugin_section_basic_callback’, // 分区介绍的回调函数
‘myplugin-settings-page’ // 所属页面的slug
);
// 3. 为分区添加一个字段
add_settings_field(
‘myplugin_field_message’, // 字段ID
‘欢迎信息’, // 字段标签
‘myplugin_field_message_callback’, // 渲染字段HTML的回调函数
‘myplugin-settings-page’, // 所属页面的slug
‘myplugin_section_basic’ // 所属分区的ID
);
}
add_action( ‘admin_init’, ‘myplugin_settings_init’ );
// 分区介绍的回调函数
function myplugin_section_basic_callback() {
echo ‘<p>Konfigurasi maklumat asas untuk plugin.</p>’;
}
// 字段渲染的回调函数
function myplugin_field_message_callback() {
// 从数据库获取现有值
$options = get_option( ‘myplugin_options’ );
$value = $options[‘message’] ?? ‘’; // PHP 7.0+ 空合并运算符
// 输出输入框
echo ‘<input type="“text”" name="“myplugin_options[message]”" value="“‘" . esc_attr( $value ) ‘” class ="“regular-text”" />‘;
} Sekarang, plugin anda mempunyai halaman tetapan pengurusan yang lengkap dan mematuhi standard WordPress, yang membolehkan anda menyimpan dan membaca pilihan konfigurasi dengan selamat.
Amalan terbaik untuk pengekstrakan antarabangsa dan keselamatan plugin
Untuk membolehkan plugin anda digunakan oleh pengguna di seluruh dunia, proses internasionalisasi (i18n) adalah langkah yang penting. Pada masa yang sama, mematuhi garis panduan keselamatan merupakan asas untuk melindungi anda dan laman web pengguna daripada serangan.
Mengimplementasikan pengekstrakan teks ke dalam pelbagai bahasa (internationalization of text)
WordPress digunakan__()、_e()Fungsi-fungsi seperti ini digunakan untuk melaksanakan terjemahan. Pertama sekali, anda perlu memastikan bahawa pengaturan yang betul telah dilakukan di bahagian atas plugin (header plugin).Text Domain(Contohnya:my-first-pluginKemudian, balut semua rentetan teks yang ditujukan untuk pengguna dengan fungsi terjemahan.
// 在插件代码中,将硬编码的文本替换
// 修改前:echo ‘<p>Terima kasih kerana menggunakan “My First Plugin”!</p>’;
// 修改后:
function myplugin_display_admin_footer_text() {
echo ‘<p>‘ . esc_html__( ‘感谢使用“我的第一个插件”!’, ‘my-first-plugin’ ) . ‘</p>’;
} Seterusnya, anda perlu menggunakan alat seperti Poedit untuk menghasilkannya..pot(Bentuk templat) Fail tersebut disimpan dalam plugin.languagesDalam folder tersebut. Penterjemah boleh membuat yang sesuai..poDan selepas dikompilasi..moFail. Akhir sekali, gunakannya semasa pemulaan plugin.load_plugin_textdomain()Function loading.
function myplugin_load_textdomain() {
load_plugin_textdomain( ‘my-first-plugin’, false, dirname( plugin_basename( __FILE__ ) ) . ‘/languages/’ );
}
add_action( ‘plugins_loaded’, ‘myplugin_load_textdomain’ ); Patuhi garis panduan pengkodan yang selamat.
Keselamatan adalah sangat penting. Pertama sekali, jangan pernah percaya pada input yang diberikan oleh pengguna. Semua data yang datang dari pengguna atau sumber luar…$_GET, $_POST, $_COOKIESemua data tersebut mesti melalui proses pengesahan, pembersihan, dan pengekstrakan (escaping).
- Keluaran yang dielakkan: Apabila data dihasilkan untuk dipersembahkan dalam HTML, JavaScript, atau URL, gunakan fungsi pengelakkan (escape function) yang sesuai.
// 输出到HTML属性
echo ‘<input value="“‘" . esc_attr( $value ) ‘“ />‘;
// 输出到HTML内容
echo ‘<p>‘. esc_html($text)‘.‘</p>’;
// 输出到JavaScript变量
echo ‘<script>var msg = “‘ . esc_js( $message ) . ‘“;</script>’;
// 输出到URL
echo ‘<a href="/ms/“‘/" . esc_url( $url ) ‘“>Pautan</a>’; - Verifikasi input: Semak sama ada data tersebut memenuhi format yang dijangka (seperti alamat e-mel, nombor, dsb.).
if ( ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) {
// 不是有效的邮箱地址
wp_die( ‘无效的邮箱格式。’ );
} - Pemeriksaan Keupayaan: Sebelum menjalankan operasi pengurusan, periksa sama ada pengguna semasa mempunyai kuasa yang diperlukan.
if ( ! current_user_can( ‘manage_options’ ) ) {
wp_die( ‘你没有执行此操作的权限。’ );
} - Pengesahan Nonce: Untuk operasi yang melibatkan perubahan keadaan (seperti penghantaran borang, permintaan AJAX), Nonce (nombor sekali guna) digunakan untuk mencegah serangan penggodaman permintaan merentas tapak (Cross-Site Request Forgery/CSRF).
// 在表单中输出nonce字段
wp_nonce_field( ‘myplugin_action’, ‘myplugin_nonce’ );
// 在处理请求时验证nonce
if ( ! isset( $_POST[‘myplugin_nonce’] ) || ! wp_verify_nonce( $_POST[‘myplugin_nonce’], ‘myplugin_action’ ) ) {
wp_die( ‘安全校验失败。’ );
} RINGKASAN
Melalui panduan ini, anda telah melalui keseluruhan proses daripada membuat fail plugin asas, memahami dan menggunakan sistem hook dalam WordPress, membina antara muka pengurusan pentadbir, hingga ke pelaksanaan ciri antarabangsa dan amalan keselamatan asas. Anda kini telah menguasai kemahiran asas yang diperlukan untuk membangunkan plugin WordPress yang lengkap dengan fungsi, struktur yang jelas, dan selamat serta boleh dipercayai. Inti dari pembangunan plugin adalah menggunakan hook aksi (actions) dan filter dengan baik untuk memperluas keupayaan WordPress, sambil sentiasa meletakkan keselamatan dan kebolehurusan sebagai keutamaan. Seterusnya, anda boleh mencuba untuk meneroka API yang lebih kompleks, seperti jadual pangkalan data yang diperibadikan, interaksi AJAX, atau titik akhir API REST, untuk membina alat yang lebih kuat.
FAQ - Soalan Lazim
Apa pengetahuan asas yang diperlukan untuk membangunkan plugin WordPress untuk ###?
Anda perlu memiliki pengetahuan asas dalam pengaturcaraan PHP, dan pemahaman tentang HTML, CSS, serta JavaScript (terutamanya jQuery) akan sangat membantu. Yang paling penting, anda perlu mempunyai pemahaman awal tentang struktur asas WordPress, seperti tema, plugin, jenis artikel, peranan pengguna, dan konsep-konsep lain yang berkaitan. Panduan ini menganggap bahawa anda telah mempunyai pengetahuan asas tersebut.
Bagaimana untuk men-debug plugin WordPress saya?
Pertama sekali, pastikan anda…wp-config.phpDalam fail tersebutWP_DEBUGKonstanta ditetapkan kepadatrueIni akan memaparkan ralat PHP, amaran, dan notis pada halaman web. Selain itu, ia juga boleh digunakan untuk…error_log()Fungsi tersebut akan menulis maklumat pembaikan (debugging information) ke dalam log ralat (error log) pelayan. Untuk pembaikan yang lebih kompleks, anda boleh mempertimbangkan untuk menggunakan plugin pembaikan khusus, seperti Query Monitor, yang membenarkan anda melihat butiran terperinci seperti pertanyaan pangkalan data (database queries), pelaksanaan fungsi pengait (hook functions), dan proses muatkan skrip (script loading).
Bagaimanakah saya harus mengedarkan plugin yang saya bangunkan?
Untuk penggunaan peribadi atau perkongsian dalam skop yang kecil, anda boleh mengemas fail tersebut dalam format ZIP. Jika anda ingin menerbitkannya secara umum, terdapat dua cara utama: pertama, hantar ke direktori plugin rasmi WordPress (WordPress.org), yang memerlukan anda mengikuti garis panduan penghantaran dan standard kod yang ditetapkan, namun ini akan memberikan anda pendedahan yang paling luas; kedua, edarkan melalui laman web sendiri atau platform pihak ketiga seperti CodeCanyon. Sebelum menghantar ke direktori rasmi, pastikan kualiti dan keselamatan kod anda.
Bagaimana untuk menambahkan jenis artikel atau kategori khusus untuk plugin saya?
Anda boleh menggunakanregister_post_type()Fungsi untuk membuat jenis artikel khusus (Custom Post Type/CPT), gunakanregister_taxonomy()Fungsi untuk membuat klasifikasi tersuai. Operasi ini sebaiknya dilakukan di…initIa dilaksanakan dalam “action hooks”. WordPress Codex dan Developer Handbook menyediakan penjelasan terperinci mengenai parameter kedua-dua fungsi tersebut, dan ini merupakan cara yang sangat berkuasa untuk memperluas keupayaan pengurusan kandungan WordPress.
Bagaimanakah nama fungsi dalam plugin dapat dielakkan daripada bertembung dengan plugin lain?
Untuk mengelakkan konflik nama fungsi, kelas, atau pemalar, amalan terbaik adalah dengan menggunakan ruang nama (namespace) dalam PHP 5.3 dan ke atas. Jika plugin anda perlu menyokong versi PHP yang lebih lama, atau anda ingin memastikan keserasian yang maksimum, anda boleh menggunakan kaedah menambahkan awalan yang unik kepada semua penanda (identifier). Sebagai contoh, gunakan nama plugin atau singkatan sebagai awalan.myplugin_function_name、MyPlugin_ClassName或MYPLUGIN_CONSTANTContoh kod dalam panduan ini semua menggunakan kaedah penambahan awalan (prefix method).
Selanjutnya, apa yang perlu kita lakukan seterusnya?
Bacaan lanjutan dan pengetahuan praktikal
Konten berikut berkaitan dengan topik artikel ini dan sesuai untuk bacaan lanjut. Lebih baik untuk memulakan dengan artikel yang paling dekat dengan masalah anda sekarang, dan kemudian secara bertahap mengembangkan ke topik yang berkaitan, kerana ini biasanya akan memberikan hasil yang lebih baik.
- 10 Cadangan Plugin WordPress Paling Berbaloi Untuk Dipasang Pada Tahun 2026, Untuk Meningkatkan Prestasi dan Keselamatan Laman Web
- Pengalaman Analisis Mendalam WooCommerce: Membina Laman Web E-dagang WordPress yang Berkuasa dari Kosong
- 10 Plugin WordPress Paling Berbaloi Dipasang pada Tahun 2026 untuk Meningkatkan Prestasi dan Keselamatan Laman Web
- 10 cadangan plugin WordPress yang berguna untuk meningkatkan prestasi dan keselamatan laman web dengan ketara
- 10 cadangan plugin penting untuk meningkatkan prestasi dan keselamatan laman web WordPress