Asas Pembangunan Plugin WordPress dan Persediaan Persekitaran
Pemalam (plugin) WordPress pada dasarnya merupakan sekumpulan fail PHP yang memperluas fungsi asas WordPress melalui API yang disediakan olehnya. Sebuah pemalam boleh bersaiz kecil, hanya menambahkan beberapa baris kod pendek, atau bersaiz besar, sehingga membina sebuah sistem pengurusan yang lengkap. Sebelum mula meng kod, adalah sangat penting untuk memahami struktur asasnya. Setiap pemalam mesti mempunyai satu fail utama, yang biasanya dinamakan sama dengan nama pemalam tersebut. my-first-plugin.phpKepala ulasan di bahagian atas fail ini adalah kunci untuk WordPress mengenal pasti plugin.
Persekitaran pembangunan merupakan asas penting untuk kerja yang cekap. Anda perlu membina sebuah persekitaran ujian di lokal yang seserupa mungkin dengan persekitaran online. Kami mengesyorkan penggunaan pakej integrasi pelayan lokal seperti XAMPP, MAMP, atau Local by Flywheel. Pada masa yang sama, pastikan editor kod atau persekitaran pembangunan terintegrasi (IDE) anda menyokong penyorotan sintaks PHP dan fungsi debugging, seperti VS Code,PhpStorm, atau Sublime Text. Aktifkan juga ciri-ciri yang berkaitan dengan WordPress dalam editor tersebut.WP_DEBUGPola (patterns) sangat penting pada tahap pembangunan untuk mengenal pasti dan membetulkan ralat (errors). Anda boleh menggunakan pola tersebut pada laman web anda…wp-config.phpDalam fail tersebut, ia ditentukan melalui definisi yang telah dibuat.define('WP_DEBUG', true);Klik untuk mengaktifkannya.
Cipta fail plugin pertama anda.
Mari kita mulakan dengan membuat plugin yang paling asas, di mana plugin ini akan memaparkan notis khusus di latar belakang pentadbiran laman web.
Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan Pembangunan Plugin WordPress: Dari Kosong Ke Sesuatu – Cipta Fungsi Khusus Anda Sendiri。
Menulis fail utama plugin dan kepala notasi
Pertama, di direktori di mana WordPress anda dipasang,wp-content/pluginsDalam folder tersebut, buatlah sebuah folder baru dan berikan nama ia sebagai…my-first-pluginDalam folder tersebut, buat sebuah fail PHP dengan nama yang sama.my-first-plugin.php。
Buka fail ini dan masukkan kepala nota maklumat plugin standard berikut. 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: 这是一个学习WordPress插件开发的入门示例。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ Setelah menyimpan fail tersebut, masuk ke halaman “Pembantu” (Plugins) di panel pentadbiran WordPress. Anda sepatutnya dapat melihat “My First Plugin” dalam senarai plugin. Aktifkan plugin tersebut. Walaupun plugin tersebut belum melaksanakan sebarang fungsi, ia telah berjaya dimuatkan oleh WordPress.
Mengimplementasikan fungsi notifikasi asas di bahagian belakang (backend)
Sekarang, kita akan menambahkan fungsi pertama untuk plugin ini: menampilkan mesej selamat datang di bahagian atas skrin pentadbiran. Kita akan menggunakan ciri-ciri yang tersedia dalam WordPress untuk mencapai ini.admin_notices“Hook.” Dalam fail utama plugin yang baru saja kita lihat, tambahkan kod berikut di bawah kepala ulasan (comment header):
// 在管理后台显示自定义通知
function mfp_show_admin_notice() {
?>
<div class="notice notice-success is-dismissible">
<p><?php _e( '欢迎使用“我的第一个插件”!', 'my-first-plugin' ); ?></p>
</div>
<?php
}
add_action( 'admin_notices', 'mfp_show_admin_notice' ); Penjelasan Kod: Kami telah mencipta sesuatu yang dinamakan…mfp_show_admin_noticeFungsi tersebut menghasilkan kod notifikasi HTML yang sesuai dengan gaya latar belakang WordPress. Gunakanlah fungsi ini dengan sewajarnya._e()Fungsi tersebut direka untuk menyokong pengaturcaraan yang bersifat antarabangsa (internationalization atau i18n) pada masa hadapan. Akhirnya, melalui…add_action()Fungsi tersebut akan memuatkan fungsi buatan kita ke dalam sistem WordPress.admin_noticesPada “hook” ini. Selepas menyimpan fail, muat semula halaman pentadbiran WordPress, dan anda akan melihat mesej pengesahan berwarna hijau yang menunjukkan kejayaan proses tersebut.
Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan Lengkap Pembangunan Plugin WordPress: Daripada Asas Hingga Teknik Tinggi。
Mengembangkan fungsi asas plugin secara mendalam
Setelah memahami struktur asas, kita boleh mengembangkan fungsi yang lebih praktikal. Salah satu keperluan yang sering berlaku adalah untuk menambahkan teks khusus secara automatik di akhir kandungan artikel.
Menggunakan penapis untuk mengubah kandungan artikel
WordPress menyediakan sebilangan besar “filter” untuk mengubah pelbagai jenis data. Untuk menambahkan teks di akhir kandungan artikel, kita akan menggunakan…the_contentPenapis. Tambahkan fungsi baru berikut ke dalam fail utama plugin:
// 在文章内容末尾添加自定义文本
function mfp_append_to_content( $content ) {
// 确保只在主循环的单篇文章页面执行
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<div class="my-plugin-footer"><p>Terima kasih kerana membaca! Artikel ini disediakan oleh “My First Plugin” untuk anda.</p></div>';
$content .= $custom_text;
}
return $content;
}
add_filter( 'the_content', 'mfp_append_to_content' ); Fungsi ini menerima data asal (original data).$contentDengan menggunakan penilaian keadaan, kami memastikan bahawa teks HTML khusus kami hanya ditambahkan pada halaman artikel yang berasingan dan hanya apabila ia merupakan sebahagian daripada pertanyaan utama (main query). Akhirnya, kandungan yang telah diubah suai akan dikembalikan. Kaedah ini adalah tidak invasif dan tidak akan mengubah kandungan asal dalam pangkalan data.
Membuat halaman tetapan pengurusan yang ringkas
Untuk membolehkan pengguna menyesuaikan teks yang ingin ditambahkan di akhir artikel, kami perlu membuat halaman tetapan untuk plugin tersebut. Proses ini melibatkan beberapa langkah: mendaftar menu, membuat fungsi panggilan balik (callback function) untuk halaman tersebut, dan memproses data daripada borang yang diisi oleh pengguna.
Pertama sekali, gunakanadmin_menuTambahkan halaman menu anak untuk fungsi “Hook”.
// 添加插件设置菜单到后台
function mfp_add_admin_menu() {
add_options_page(
'我的第一个插件设置', // 页面标题
'我的插件设置', // 菜单标题
'manage_options', // 权限要求
'my-first-plugin', // 菜单slug
'mfp_options_page_html' // 显示页面内容的回调函数
);
}
add_action( 'admin_menu', 'mfp_add_admin_menu' ); Seterusnya, definisikan fungsi panggilan balik (callback function).mfp_options_page_htmlUntuk memformat borang HTML halaman tetapan. Pada masa yang sama, kita perlu menggunakan API tetapan WordPress untuk mendaftar, menyimpan dan mengambil pilihan dengan selamat. Untuk kesederhanaan, berikut ialah pelaksanaan versi yang dipermudahkan:
Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan Lengkap Pembangunan Plugin WordPress: Dari Permulaan Hingga Pembinaan Perluasan Tahap Profesional。
// 设置页面的HTML内容
function mfp_options_page_html() {
// 检查用户权限
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">
<?php
// 输出设置字段、非ce等安全字段
settings_fields( 'mfp_options_group' );
do_settings_sections( 'my-first-plugin' );
submit_button( '保存设置' );
?>
<input type="hidden" name="trp-form-language" value="ms"/></form>
</div>
<?php
}
// 初始化插件设置
function mfp_settings_init() {
// 注册一个设置
register_setting( 'mfp_options_group', 'mfp_footer_text' );
// 添加一个设置区域
add_settings_section(
'mfp_section',
'自定义文本设置',
null,
'my-first-plugin'
);
// 向区域中添加字段
add_settings_field(
'mfp_field_footer',
'文章页脚文本',
'mfp_field_footer_html',
'my-first-plugin',
'mfp_section'
);
}
add_action( 'admin_init', 'mfp_settings_init' );
// 渲染文本输入字段
function mfp_field_footer_html() {
$option = get_option( 'mfp_footer_text', '感谢阅读!本文由“我的第一个插件”为您呈现。' );
?>
<input type='text' name='mfp_footer_text' value='<?php echo esc_attr( $option ); ?>' class='regular-text'>
<p class="description">Kandungan yang dimasukkan di sini akan dipaparkan di akhir setiap artikel.</p>
<?php
} Akhir sekali, ubah suai yang telah dilakukan sebelum ini.mfp_append_to_contentFungsi tersebut membenarkannya untuk mengakses pilihan daripada pangkalan data.mfp_footer_textMembaca teks daripada sumber tertentu, bukan menggunakan teks yang telah dikodkan secara tetap (hard-coded).
Keamanan plugin, pengoptimuman, dan persiapan untuk penerbitan
Pada fasa akhir pembangunan, perhatian harus diberikan kepada aspek keselamatan, kualiti kod, dan proses penempatan (deployment) untuk memastikan bahawa plugin tersebut adalah stabil dan boleh digunakan dengan berkesan.
Patuhi amalan terbaik keselamatan
Semua input yang diberikan oleh pengguna mesti di-escape atau disahkan sebelum dipaparkan di dalam pelayar atau disimpan ke dalam pangkalan data. Semasa proses pemaparan, gunakan kaedah yang sesuai untuk memastikan keselamatan dan kebenaran data yang dihantar.esc_html()、esc_attr()、esc_url()Fungsi-fungsi seperti ini digunakan semasa mengendalikan penghantaran borang atau permintaan AJAX.wp_verify_nonce()和check_admin_referer()Untuk mengesahkan kesahihan permintaan dan mencegah serangan penggodaman jenis Cross-Site Request Forgery (CSRF), jangan pernah mempercayai maklumat tersebut secara langsung.$_GET、$_POST或$_REQUESTData yang terdapat di dalamnya.
Mengimplementasikan sokongan antarabangsa (internationalization)
Untuk membolehkan plugin digunakan oleh pengguna di seluruh dunia, semua rentetan teks yang ditujukan untuk pengguna dalam kod perlu diinternasionalisasi. Kita telah menggunakan kaedah ini dalam contoh sebelumnya._e()Fungsi tersebut digunakan untuk mengeluarkan teks terjemahan. Selain itu, anda perlu menyatakan perkara ini dalam kepala nota plugin.Text Domain和Domain Path。
Semasa pemulaan plugin (contohnya, melalui…)plugins_loaded(Kekunci “Hook”), gunakanload_plugin_textdomain()Fungsi untuk memuatkan fail bahasa:
function mfp_load_textdomain() {
load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'mfp_load_textdomain' ); Kemudian, anda boleh menggunakan alat seperti Poedit untuk mengekstrak rentetan teks daripada kod sumber plugin tersebut.__(), _e()String yang dibungkus oleh fungsi seperti `wait` (string yang dihasilkan oleh fungsi `wait`)..potFile-file templat, untuk digunakan oleh penterjemah..po和.moDokumen.
Pengurusan Kod dan Pertimbangan Prestasi
Seiring dengan pertumbuhan fungsi tambahan (plugins), tidak sepatutnya semua kod disimpan dalam fail utama. Pendekatan yang lebih baik adalah untuk memisahkan kod mengikut modul fungsi yang berbeza..phpDalam fail tersebut, kandungan-kandungan tersebut disertakan secara berpilih melalui fail utama. Sebagai contoh, ia adalah mungkin untuk membuat…includes/admin/Direktori tersebut menyimpan kod yang berkaitan dengan bahagian belakang (backend) sistem.includes/public/Menyimpan kod yang berkaitan dengan bahagian hadapan (frontend).includes/class-*.phpMenyimpan definisi kelas.
Untuk operasi yang memerlukan banyak sumber, pertimbangkan untuk menggunakan API Transients dalam WordPress untuk menyimpan hasil kueri yang memakan masa, atau gunakan API Cron untuk mengurus tugas-tugas yang tidak perlu dilakukan secara segera di latar belakang. Pastikan bahawa apabila plugin tersebut diaktifkan semula, ia dapat dipasang dengan betul menggunakan fungsi penggantungan (uninstallation hook) yang telah didaftarkan.register_uninstall_hook()Pembersihkan data dan pilihan yang telah dibuat, untuk menjaga laman web tetap kemas dan teratur.
RINGKASAN
Melalui tutorial ini, kita telah menyelesaikan proses pembinaan sebuah plugin WordPress yang lengkap sepenuhnya, bermula dari awal hingga akhir. Kita memulakan dengan memahami struktur asas plugin dan membina persekitaran pembangunan, kemudian membuat fail utama yang mengandungi kepala nota standard. Selepas itu, kita melanjutkan proses pembangunan dengan memasang (mengmount) komponen-komponen yang diperlukan ke dalam plugin tersebut.admin_notices和the_contentDua fungsi utama ini, iaitu notifikasi latar belakang dan teks di bahagian kaki artikel, telah dilaksanakan melalui penggunaan “hook” yang terdapat dalam WordPress. Untuk meningkatkan kegunaan plugin ini, kami telah memperkenalkan API pengaturan WordPress dan membina halaman pengurusan yang membenarkan pengguna untuk menyesuaikan teks tersebut mengikut keperluan mereka. Selain itu, kami juga membincangkan amalan keselamatan yang penting dalam pembangunan plugin, sokongan untuk bahasa internasional (internationalization), serta pengoptimuman organisasi kod. Proses pembangunan plugin ini secara jelas menunjukkan paradigma utama dalam pembangunan plugin WordPress: menggunakan “action hook” dan “filter” yang berkuasa untuk menambahkan fungsi baru, mengikuti spesifikasi API untuk mencipta antara muka yang mesra pengguna, dan sentiasa mengutamakan keselamatan serta kemudahan penyelenggaraan. Dengan memahami asas-asas ini, anda kini bersedia untuk meneroka dunia pembangunan plugin yang lebih kompleks.
FAQ - Soalan Lazim
Apa pengetahuan asas yang diperlukan untuk membangunkan plugin WordPress?
Anda perlu memiliki asas pengaturcaraan PHP yang kukuh, kerana kod plugin kebanyakannya ditulis dalam PHP. Pada masa yang sama, anda perlu mempunyai pemahaman asas tentang HTML, CSS, dan JavaScript untuk menguruskan penampilan dan interaksi pada bahagian hadapan (front end). Adalah sangat penting untuk biasa dengan konsep-konsep asas WordPress, seperti tema, jenis artikel, kategori, dan terutamanya sistem Hook (termasuk Action dan Filter) dalam WordPress.
###
Apa fail asas yang mesti dimasukkan dalam sebuah plugin WordPress?
Dalam keadaan yang paling asas, sebuah plugin boleh hanya terdiri daripada satu fail PHP. Namun, fail tersebut mesti mengandungi kepala maklumat plugin (Plugin Headers) yang mematuhi standard WordPress di bahagian atasnya, seperti yang ditunjukkan dalam contoh kami.Plugin Name、DescriptionBidang-bidang seperti ini merupakan satu-satunya asas yang membenarkan WordPress untuk mengenal pasti plugin tersebut dan menunjukkannya dalam senarai pengurusan plugin.
###
Bagaimanakah saya sepatutnya menamakan fungsi dan variabel untuk plugin saya?
Untuk mengelakkan konflik dengan kod WordPress core, tema, atau plugin lain, semua fungsi, kelas, variabel, dan konstanta yang dibuat sendiri harus menggunakan prefiks yang unik. Biasanya, disyorkan untuk menggunakan prefiks yang berkaitan dengan singkatan atau nama ringkas plugin tersebut. Seperti yang digunakan dalam contoh kami…mfp_(Representing My First Plugin.) Nama kelas juga harus mengikuti peraturan yang sama, dan sebaiknya menggunakan nama penuh yang bermakna.
###
Adakah jadual pangkalan data atau pilihan yang dibuat dalam plugin akan dibersihkan setelah plugin tersebut dihapuskan?
Secara lalunya, tidak. Jika anda melakukannya melalui…add_option()、update_option()Opsi yang dibuat, atau jadual data yang dibina secara khusus, akan kekal dalam pangkalan data walaupun pengguna memadamkan fail plugin melalui panel pentadbiran WordPress. Untuk memberikan pengalaman pemindahan yang bersih, anda harus menggunakan…register_uninstall_hook()Fungsi ini digunakan untuk mendaftar fungsi panggilan balik (callback) yang bertujuan untuk membersihkan data. Dalam fungsi tersebut, semua pilihan yang berkaitan dengan plugin, jadual pangkalan data, dan cache sementara akan dihapuskan.
###
Bagaimana untuk menjadikan plugin saya serasi dengan lebih banyak versi WordPress?
Elakkan menggunakan versi PHP atau fungsi khusus WordPress yang terlalu baru dalam kod anda. Sebelum menggunakan sesuatu fungsi, kelas atau hook, periksa dokumen rasmi untuk mengetahui versi WordPress mana fungsi tersebut diperkenalkan. Anda boleh melakukan ini dengan menambahkan notasi dalam fail utama plugin anda.Requires at least:Pernyataan medan menunjukkan versi WordPress minimum yang disokong. Dalam kod, ia boleh digabungkan dengan pernyataan syarat (conditional statements) untuk mengawal penggunaan medan tersebut berdasarkan versi WordPress yang digunakan oleh pengguna.function_exists()或class_exists()Periksa untuk menyediakan penyelesaian alternatif (penurunan taraf) atau petunjuk yang mesra pengguna.
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.
- Bagaimana untuk memilih dan menyesuaikan tema WordPress yang sempurna untuk anda?
- Panduan Pembangunan Plugin WordPress: Dari Kosong Ke Sifar, Cipta Plugin Custom Pertama Anda
- Menjadi Pembangun Plugin WordPress: Panduan Lengkap Dari Awal Hingga Akhir
- Dari Nol ke Satu: Panduan Lengkap dan Teknik Praktikal untuk Membina Laman Web Profesional Menggunakan WordPress.
- Panduan Lengkap Pembangunan Plugin WordPress: Dari Permulaan Hingga Kemahiran Tinggi Untuk Membina Perluasan Profesional