Panduan Praktikal untuk Membangunkan Plugin WordPress: Membina Plugin Fungsi Pertama Anda Daripada Nol Hingga Satu

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

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

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 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 NameText 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).

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

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() &amp;&amp; in_the_loop() &amp;&amp; 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.

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.

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;
	}
	?&gt;
	<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+
	?&gt; 
</p>
	<input type="“text”"
		   id="“mfp_field_copyright_text”"
		   name="“mfp_options[copyright_text]”"
		   value="“NO NUMERIC NOISE KEY" 1000”
		 class="“regular-text”">
	&lt;?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 DomainDomain 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.