Sistem plugin WordPress merupakan inti kepada keupayaan pengembangan yang kuat. Dengan menggunakan plugin, pembangun dapat menambahkan pelbagai ciri kepada laman web, daripada bentuk hubungan yang ringkas hingga ke fungsi e-dagang yang kompleks. Artikel ini akan membimbing anda melalui proses pembinaan sebuah plugin yang lengkap, termasuk pemahaman mendalam tentang struktur asasnya, mekanisme “hook”, aspek keselamatan, serta amalan terbaik. Pada akhirnya, anda akan memiliki sebuah plugin yang siap untuk diterbitkan atau digunakan secara langsung.
Persekitaran pembangunan dan persediaan asas.
Sebelum menulis baris kod pertama, sebuah persekitaran pembangunan yang stabil dan cekap adalah sangat penting. Ini bukan sahaja membolehkan anda memberi tumpuan kepada pembinaan logik, tetapi juga dapat mengelakkan beberapa ralat yang sering berlaku.
Konfigurasi persekitaran pembangunan tempatan
Disyorkan untuk menggunakan set alat persekitaran pelayan tempatan seperti XAMPP, MAMP, atau Local by Flywheel. Pastikan versi PHP anda (disyorkan 7.4 atau lebih tinggi) adalah serasi dengan persekitaran WordPress yang akan dideploy, dan aktifkan mod pembangunan (debugging mode). Dalam WordPress…wp-config.phpDalam fail tersebut, tetapkanWP_DEBUG为trueIni akan menunjukkan semua ralat dan amaran semasa fasa pembangunan, membantu anda mengenal pasti masalah dengan cepat.
Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan Permulaan Pembangunan Plugin WordPress: Dari Asas Hingga Pembinaan Modul Fungsi Profesional。
Pembangunan struktur fail plugin
Sebuah plugin standard memerlukan sekurang-kurangnya satu fail utama. Amalan yang biasa dilakukan adalah dengan membuat folder khusus untuk plugin tersebut, dan memberikan nama folder itu berdasarkan fungsi utama plugin tersebut.my-first-pluginDalam folder tersebut, fail utama biasanya mempunyai nama yang sama dengan folder tersebut, diikuti dengan sambungan (extension)..phpIaitumy-first-plugin.phpStruktur yang jelas membantu dalam menambahkan kod JavaScript, CSS, pakej bahasa (language packages), atau fail kelas (class files) pada masa akan datang.
Mencipta fail utama plugin dan maklumat header asas
“Pintu masuk” (entry point) bagi plugin dan proses pengenalan identiti (identity recognition) kedua-duanya bergantung pada maklumat header (header information) yang terdapat di bahagian atas fail utama (main file). Ini merupakan kunci bagi WordPress untuk mengenali dan memuatkan plugin tersebut.
Menulis kepala plugin standard
Di awal fail PHP utama, anda mesti menggunakan blok ulasan PHP yang khusus untuk memberikan maklumat tentang plugin tersebut. Maklumat ini akan dipaparkan di halaman pengurusan “Plugin” di bahagian belakang WordPress (backend).
<?php
/**
* Plugin Name: 我的第一个功能插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个实战指南中创建的示例插件,用于演示核心开发流程。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ Di antaranya,Plugin Name和Text DomainIni adalah item wajib, manakala item lain adalah pilihan. Bidang teks (text field).Text DomainDigunakan untuk sokongan antarabangsa (internationalization).
Mencegah akses langsung ke fail
Untuk melindungi keselamatan kod plugin dan mencegah akses langsung ke fail utama melalui URL, yang boleh menyebabkan kebocoran maklumat atau ralat, perlu ditambahkan pemeriksaan akses langsung selepas maklumat header (header information) dan sebelum sebarang kod lain.
Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan Pembangunan Custom Plugin untuk WooCommerce: Membina Toko Dalam Talian yang Unik。
// 防止直接访问
if ( ! defined( 'ABSPATH' ) ) {
exit;
} ConstantABSPATHIni adalah path mutlak ke direktori akar WordPress, dan ia akan ditentukan oleh WordPress semasa pelaksanaannya. Syarat ini memastikan bahawa kod seterusnya hanya akan dijalankan dalam persekitaran WordPress.
Melaksanakan fungsi utama dan pengaitan (hooks) dengan WordPress
WordPress menyediakan dua mekanisme yang sangat kuat, iaitu Action Hooks dan Filter Hooks, yang membenarkan kod anda untuk campur tangan dalam proses utama atau mengubah data pada masa-masa tertentu. Memahami dan menggunakan mekanisme ini adalah kunci dalam pembangunan plugin.
Gunakan pengait tindakan untuk menambah fungsi
Hook untuk tindakan membenarkan anda menjalankan kod khusus apabila acara tertentu berlaku. Sebagai contoh, kita boleh membuat fungsi yang menambahkan notis hak cipta secara automatik di bahagian bawah kandungan artikel. Ini memerlukan penggunaan…the_contentPenapis (yang pada dasarnya merupakan penapis hook, tetapi cara penggunaannya serupa dengan action hook) danwp_enqueue_scriptsAction hook digunakan untuk memuatkan sumber (resources).
Pertama sekali, kita menulis sebuah fungsi.mfp_add_copyright_noticeDan pasangkannya ke…the_contentPada kait itu.
// Tambahkan pemberitahuan hak cipta selepas kandungan artikel
function mfp_add_copyright_notice( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$copyright_text = '<p><em>Hak cipta untuk artikel ini adalah milik laman web ini. Sila nyatakan sumber jika anda menggunakan semula kandungan ini.</em></p>';
$content .= $copyright_text;
}
return $content;
}
add_filter( 'the_content', 'mfp_add_copyright_notice' ); Pembenaran syarat memastikan bahawa kenyataan hak cipta hanya akan dipaparkan dalam gelung utama untuk setiap artikel di bahagian hadapan (frontend), dan tidak akan mempengaruhi halaman, ringkasan, atau bahagian belakang (backend).
Menggunakan pengait penyaring untuk mengubah suai data.
Hook filter digunakan untuk mengubah sebarang data yang dihantar kepadanya. Misalnya, jika kita ingin mengubah beberapa bahagian daripada tajuk laman web, kita boleh membuat sebuah fungsi dan menambahkannya ke dalam sistem.wp_titleatau yang lebih modendocument_title_partsPenapis.
Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan Terperinci Mengenai Proses Pembangunan Plugin WordPress: Dari Permulaan Hingga Ke Penguasaan (Praktikal Guide)。
// 修改网站标题后缀
function mfp_modify_title_suffix( $title ) {
if ( is_home() ) {
$title['suffix'] = ' | 我的精彩博客';
}
return $title;
}
add_filter( 'document_title_parts', 'mfp_modify_title_suffix' ); Mengintegrasikan skrip dan gaya dengan selamat
Untuk menambahkan gaya atau interaksi pada bahagian hadapan (frontend) plugin, anda mesti menggunakan kaedah yang disyorkan oleh WordPress.wp_enqueue_style()和wp_enqueue_script()Fungsi, dan melaluiwp_enqueue_scriptsHook call.
// 注册并排队插件的前端样式
function mfp_enqueue_frontend_assets() {
// 获取插件目录的URL
$plugin_url = plugin_dir_url( __FILE__ );
// 排队一个CSS文件
wp_enqueue_style(
'mfp-frontend-style',
$plugin_url . 'assets/css/frontend.css',
array(),
'1.0.0'
);
// 排队一个JS文件,并依赖jQuery
wp_enqueue_script(
'mfp-frontend-script',
$plugin_url . 'assets/js/frontend.js',
array( 'jquery' ),
'1.0.0',
true // 在页脚加载
);
}
add_action( 'wp_enqueue_scripts', 'mfp_enqueue_frontend_assets' ); Membuat halaman pengurusan dan tetapan pilihan
Banyak plugin memerlukan pilihan konfigurasi untuk pengguna. WordPress menyediakan API pengaturan yang digunakan untuk membuat menu pengurusan dan halaman pilihan dengan cara yang selamat dan standard.
Tambahkan menu pengurusan
Pertama sekali, gunakanadd_action( ‘admin_menu’, … )Mari daftar item menu pengurusan yang baru atau item sub-menu. Berikut adalah fungsi yang diperlukan:mfp_create_admin_menuSebuah halaman sub-menu akan ditambahkan di bawah menu utama “Settings”.
// 创建插件管理菜单
function mfp_create_admin_menu() {
add_options_page(
‘我的插件设置’, // 页面标题
‘我的插件’, // 菜单标题
‘manage_options’, // 权限要求
‘mfp-settings’, // 菜单slug
‘mfp_settings_page_html’ // 用于输出页面内容的回调函数
);
}
add_action( ‘admin_menu’, ‘mfp_create_admin_menu’ ); Membina halaman tetapan dan bidang
Seterusnya, perlu mendefinisikan fungsi panggilan balik (callback function).mfp_settings_page_htmlUntuk merender kandungan halaman, gunakan API yang disediakan untuk mendaftar satu kumpulan tetapan (setting group), satu pilihan (option), dan beberapa bidang khusus (specific fields).
\n// Mengesetkan output HTML halaman tetapan
function mfp_settings_page_html() {
// Memeriksa kebenaran pengguna
if ( ! current_user_can( ‘manage_options’ ) ) {
return;
}
?>
<div class="“wrap”">
<h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
<form action="/ms/“options.php”/" method="“post”" data-trp-original-action="“options.php”">
<p>
<input type="hidden" name="trp-form-language" value="ms"/></form>
</div>
<p> ‘mfp_field_copyright_text’ )
);
}
add_action( ‘admin_init’, ‘mfp_settings_init’ );
// Memaparkan medan teks hak cipta
function mfp_field_copyright_text_html() {
$options = get_option( ‘mfp_options’ );
$value = $options[‘copyright_text’] ?? ‘Teks Hak Cipta Lalai’; // Operator penggabungan kosong untuk PHP 7.0+
?>
</p>
<input type="“text”"
id="“mfp_field_copyright_text”"
name="“mfp_options[copyright_text]”"
value="“NO NUMERIC NOISE KEY" 1000”
class="“regular-text”">
<?php
} Sekarang, anda boleh melakukannya seperti yang telah dilakukan sebelum ini.mfp_add_copyright_noticeDalam fungsi, digunakanget_option( ‘mfp_options’ )[‘copyright_text’]Untuk mendapatkan teks latar belakang yang diset oleh pengguna secara dinamik, fungsi tambahan (plugin) dapat disesuaikan (dikonfigurasi).
RINGKASAN
Artikel ini menerangkan secara terperinci proses penuh untuk membangunkan sebuah plugin fungsi WordPress dari awal. Kita bermula dengan membina persekitaran pembangunan dan mencipta fail utama yang mengandungi maklumat header standard, sambil menekankan kepentingan langkah-langkah keselamatan. Kemudian, kita mengkaji lebih mendalam mekanisme hook dalam pembangunan plugin WordPress, termasuk cara menggunakan hook tindakan (action hooks) untuk menjalankan kod dan hook penapis (filter hooks) untuk mengubah data, serta menunjukkan kaedah yang selamat untuk memuatkan sumber-sumber frontend. Akhirnya, kita menggunakan API tetapan WordPress untuk membuat halaman tetapan pengurusan yang berkualiti tinggi, membolehkan pengguna menyesuaikan fungsi plugin tersebut mengikut keperluan mereka.
Seluruh proses pembangunan mengikut standard pengkodan WordPress dan amalan terbaik, termasuk penggunaan awalan fungsi yang unik, pengesahan dan pengekstrakan data, serta penyediaan sokongan untuk penggunaan dalam pelbagai bahasa (internationalization). Setelah memahami asas-asas ini, anda boleh mengembangkan fungsi plugin anda dengan tidak terhad dengan menggabungkan pelbagai “hook” (mekanisme penghubung antara komponen aplikasi), membuat jadual pangkalan data yang khusus, atau mengembangkan alat tambahan (tools) serta kod pendek (shortcodes).
FAQ - Soalan Lazim
Bagaimana untuk memilih prefiks yang sesuai untuk fungsi dan kelas plugin?
Fungsi global, kelas, variabel, dan konstanta dalam semua plugin harus menggunakan prefiks yang unik untuk mengelakkan konflik nama dengan plugin atau tema lain. Prefiks biasanya terdiri daripada singkatan atau nama ringkas plugin tersebut. Sebagai contoh, jika nama plugin adalah “My First Plugin”, anda boleh memilih prefiks yang sesuai.mfp_或myfirstplugin_Menjaga konsistensi adalah sangat penting.
Mengapa kita perlu menggunakan `wp_enqueue_script` untuk menambahkan skrip?
Gunakanwp_enqueue_script()和wp_enqueue_style()Ini adalah kaedah yang disyorkan oleh WordPress secara rasmi. Kaedah ini dapat mengurus kebergantungan skrip dengan betul (seperti jQuery), mencegah skrip yang sama daripada dimuat semula, dan membenarkan plugin atau tema lain untuk berfungsi dengan lancar.wp_deregister_script()Untuk menghapus atau mengganti skrip anda dengan selamat, gunakan kaedah berikut secara langsung.Jika tag dimasukkan, kelebihan pengurusan tersebut tidak dapat dinikmati, dan ia mungkin menyebabkan konflik.
Apakah garis panduan keselamatan yang penting semasa mengembangkan plugin?
Prinsip utama adalah: Jangan pernah percaya pada input yang diberikan oleh pengguna. Berhati-hati dengan semua data yang diterima daripada pengguna.$_GET、$_POST、$_REQUESTData yang diperoleh daripada sumber atau pangkalan data perlu disemak, dibersihkan, dan diubah suai (misalnya dengan menggunakan fungsi escape) sebelum digunakan dalam kod HTML.esc_html()、esc_attr(); Outputkan ke URL untuk digunakan.esc_url()Dalam kueri SQL, pastikan anda menggunakan…$wpdb->prepare()Lakukan pertanyaan yang diparameterkan untuk mencegah serangan SQL injection. Pada masa yang sama, gunakan…current_user_can()Semak kebenaran pengguna.
Bagaimana untuk menambahkan sokongan antarabangsa (internationalization) kepada plugin saya?
Pertama sekali, tetapkan maklumat header plugin dengan betul.Text Domain和Domain PathKemudian, di semua tempat dalam kod di mana terdapat ayat-ayat yang perlu diterjemahkan, gunakan…()Untuk melakukan terjemahan, sila berikan teks yang ingin diterjemahkan._e()“Jalankan terjemahan balik” boleh diterjemahkan sebagai “Perform echo translation”.( ‘Hello World’, ‘my-first-plugin’ )Akhirnya, gunakan alat seperti Poedit untuk memindai kod dan menjana….potFail templat, dan buatnya untuk bahasa yang berbeza..po和.moTerjemahkan fail tersebut dan letakkannya di…/languagesDalam direktori tersebut.
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.
- Mengapa memilih WordPress: Sepuluh Kelebihan Utama Sistem Pengurusan Kandungan (CMS) Berbasis Sumber Terbuka
- Menguasai WooCommerce dalam Sepuluh Minit: Panduan Pembinaan Laman Web E-dagang Dari Permulaan Hingga Keuntungan
- Panduan Lengkap WooCommerce: Daripada Pemasangan Hingga Konfigurasi E-dagang Lanjutan Untuk Penggunaan Secara Komersial
- Apa itu WordPress? Pengenalan menyeluruh tentang Sistem Pengurusan Kandungan (Content Management System/CMS)
- Pendahuluan: Mengapa memilih WordPress untuk pembangunan?