Struktur asas dan cara kerja plugin WordPress
Untuk mengembangkan sebuah plugin WordPress, pertama-tama anda perlu memahami komponen-komponen asasnya dan cara ia berfungsi sepanjang kitaran hidup (lifecycle) WordPress. Sebuah plugin pada dasarnya terdiri daripada satu atau lebih fail PHP, yang menggunakan sejumlah besar API (Application Programming Interfaces) yang disediakan oleh WordPress untuk memperluas atau mengubah fungsi laman web tersebut.
Asas bagi mana-mana plugin adalah maklumat header plugin tersebut, yang diletakkan di bahagian atas fail utama plugin. Maklumat ini ditulis dalam format ulasan PHP yang khusus, dan berfungsi untuk memberitahu WordPress tentang nama plugin, deskripsi, versi, penulis, dan metadata lainnya. Sebagai contoh, sebuah plugin yang bernama… my-first-plugin.php Fail tersebut mungkin bermula dengan maklumat berikut:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习插件开发的简单示例。
* Version: 1.0.0
* Author: 开发者姓名
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ WordPress berinteraksi dengan plugin melalui mekanisme yang dipanggil “Hook”. Terdapat dua jenis Hook: Action dan Filter. Hook Action membenarkan anda menyisipkan kod anda pada titik masa tertentu semasa WordPress dijalankan, seperti selepas artikel diterbitkan atau semasa gaya halaman dimuatkan. Hook Filter pula membenarkan anda mengubah data yang dihasilkan oleh WordPress semasa proses pelaksanaannya, seperti mengedit kandungan artikel atau mengubah panjang ringkasan artikel. Memahami dan menggunakan Hook dengan mahir adalah kunci kepada pembangunan plugin yang cekap.
Diperoleh daripada WEB\nDisyorkan untuk membaca. Pendekatan yang mudah difahami: Panduan lengkap untuk mempelajari pembangunan plugin WordPress dari awal。
Mengerti organisasi fail plugin
Satu plugin yang ringkas boleh hanya mempunyai satu fail utama. Namun, seiring dengan penambahan fungsi, struktur organisasi fail yang sesuai menjadi sangat penting. Biasanya, direktori plugin yang lengkap akan mengandungi fail plugin utama (seperti… my-plugin.phpYang digunakan untuk mengandungi fungsi dan kelas includes Folder, digunakan untuk menyimpan sumber-sumber frontend (front-end resources). assets Folder (mengandungi CSS, JavaScript, gambar), digunakan untuk fail terjemahan languages Folder, serta yang digunakan untuk templat antara muka pengguna (user interface templates). templates Folder. Struktur modular ini membantu dalam penyelenggaraan kod dan kerjasama pasukan.
Cipta plugin pertama yang mudah anda.
Mari kita mulakan dengan sebuah contoh praktikal. Kita akan membuat sebuah plugin yang akan menambahkan kenyataan hak cipta yang disesuaikan secara automatik di akhir semua artikel dan kandungan halaman pada laman web.
Pertama sekali, anda perlu berada dalam direktori pemasangan WordPress. wp-content/plugins Dalam folder tersebut, buat sebuah folder baru dan berikan nama ia sebagai… my-copyright-noticeKemudian, dalam folder tersebut, buat sebuah fail PHP utama, contohnya dengan nama “main.php”. my-copyright-notice.php。
Menambahkan fungsi kandungan pelaksanaan
Kita akan menggunakan hook penapisan (filter hooks). the_content Untuk melaksanakan fungsi ini, buka fail utama, tambahkan maklumat kepala plugin terlebih dahulu, kemudian tulis fungsi inti.
<?php
/**
* Plugin Name: 自动版权声明
* Description: 在文章和页面内容末尾自动添加版权信息。
* Version: 1.0
* Author: WordPress 学习者
*/
// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* 在内容末尾添加版权声明的函数
*
* @param string $content 原始的文章内容。
* @return string 添加了版权声明后的内容。
*/
function mycn_add_copyright_to_content( $content ) {
// 仅对主循环内的文章和页面生效
if ( is_single() || is_page() ) {
$copyright_text = '<p><em>© Hak Cipta: Artikel ini dimiliki oleh laman web ini dan tidak boleh disalin tanpa izin.</em></p>';
$content .= $copyright_text;
}
return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器上
add_filter( 'the_content', 'mycn_add_copyright_to_content' ); Setelah menyimpan fail tersebut, log masuk ke panel pentadbiran WordPress anda, kemudian ke halaman “Pemalam” (Plugins). Anda sepatutnya dapat melihat pemalam bernama “Automatic Copyright Statement”. Setelah mengaktifkannya, lihat mana-mana artikel atau halaman, dan teks hak cipta yang anda tetapkan akan muncul di bahagian bawah kandungan tersebut. Walaupun contoh ini agak ringkas, ia menunjukkan secara lengkap proses pembuatan, pengaturcaraan, dan pengaktifan pemalam tersebut.
Diperoleh daripada WEB\nDisyorkan untuk membaca. Menguasai Pembangunan Plugin WordPress dari Awal: Prinsip, Amalan, dan Teknik Lanjutan。
Menggunakan API WordPress untuk berinteraksi dengan pangkalan data
Plugin-Plugin yang lebih canggih biasanya memerlukan penyimpanan dan pengambilan data. WordPress menyediakan kelas-kelas yang sangat mudah untuk operasi pangkalan data. wpdb API pilihan membolehkan anda mengoperasi pangkalan data dengan selamat tanpa perlu menulis kod SQL secara langsung.
Untuk data yang terdiri daripada pasangan kunci-nilai yang mudah, seperti tetapan konfigurasi plugin, penggunaan API pilihan sangat disyorkan. Anda boleh menggunakannya… add_option(), get_option(), update_option() 和 delete_option() Fungsi-fungsi seperti ini digunakan untuk mengurus data. Fungsi-fungsi tersebut akan mengendalikan proses pengurusan data secara automatik, termasuk pengurusan pemformatan data (serialization) dan penyimpanannya ke dalam sistem. wp_options Dalam jadual.
Mencipta jadual pangkalan data khusus
Apabila perlu menyimpan data yang terstruktur dan kompleks (seperti pesanan, rekod penghantaran borang), anda mungkin perlu membuat jadual pangkalan data khusus. Ini biasanya dilakukan apabila sebuah plugin diaktifkan. Untuk ini, anda perlu menulis sebuah fungsi dan mendaftarkannya ke dalam sistem pangkalan data. register_activation_hook Pada kait yang istimewa ini.
Fail utama plugin anda boleh mengandungi kod yang serupa dengan berikut:
/**
* 插件激活时创建自定义数据库表
*/
function myplugin_create_custom_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'myplugin_data'; // 获取带前缀的表名,如 wp_myplugin_data
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
user_id int NOT NULL,
data_value text NOT NULL,
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
// 引入 WordPress 升级所需的文件
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
// 注册激活钩子
register_activation_hook( __FILE__, 'myplugin_create_custom_table' ); dbDelta() Fungsi merupakan alat yang kuat dalam WordPress untuk membuat atau mengemaskini jadual pangkalan data. Ia akan membandingkan struktur jadual yang sedia ada dengan perintah SQL anda, dan hanya membuat perubahan yang perlu. Perhatikan…dbDelta() Sangat sensitif terhadap format ayat SQL (seperti definisi kunci, pengekstrakan).
Membina antaramuka pengurusan plugin dan amalan keselamatan
Sebuah plugin profesional biasanya memerlukan halaman konfigurasi di belakang tabir (backend) agar pengguna dapat mengubah suai tetapan. Anda boleh menggunakan “Settings API” dari WordPress untuk membuat halaman tersebut dengan cara yang teratur dan selamat. API ini bertanggungjawab untuk mengurus pengesahan borang, medan keselamatan (nonce), serta penyimpanan tetapan, yang sangat memudahkan proses pembangunan.
Diperoleh daripada WEB\nDisyorkan untuk membaca. Tema WordPress yang Diperibadikan: Panduan Lengkap Untuk Membina Reka Bentuk Laman Web Anda Sendiri Dari Awal。
Tambahkan halaman tetapan plugin
Pertama sekali, anda perlu menggunakan add_action() Fungsi tersebut memuatkan (mount) satu ke… admin_menu Fungsi panggil balik (callback function) untuk pengait tindakan (action hook) digunakan untuk menambahkan item menu dan halaman. Kemudian, dalam fungsi panggil balik halaman tersebut, gunakan fungsi API yang disediakan untuk membina borang (form).
Berikut adalah contoh yang disederhanakan untuk menunjukkan cara menambahkan halaman menu utama dan mendaftar medan tetapan:
/**
* 添加插件设置菜单
*/
function myplugin_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'myplugin-settings', // 菜单 slug
'myplugin_settings_page', // 显示设置页面的回调函数
'dashicons-admin-generic', // 图标
80 // 菜单位置
);
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
/**
* 初始化插件设置
*/
function myplugin_settings_init() {
// 注册一个新的设置到 “myplugin_settings” 页面
register_setting( ‘myplugin_settings’, ‘myplugin_options’ );
// 在页面中添加一个区域
add_settings_section(
‘myplugin_section’,
‘主要设置’,
null, // 可选的区域描述回调函数
‘myplugin_settings’
);
// 向区域中添加一个字段
add_settings_field(
‘api_key’,
‘API 密钥’,
‘myplugin_api_key_field_callback’, // 渲染字段 HTML 的回调函数
‘myplugin_settings’,
‘myplugin_section’
);
}
add_action( ‘admin_init’, ‘myplugin_settings_init’ );
/**
* 渲染 API 密钥字段
*/
function myplugin_api_key_field_callback() {
$options = get_option( ‘myplugin_options’ );
?>
<input type="‘text’" name="‘myplugin_options[api_key]’" value="‘NO NUMERIC NOISE KEY" 1003’>
<?php
}
/**
* 设置页面的显示内容
*/
function myplugin_settings_page() {
?>
<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
settings_fields( ‘myplugin_settings’ ); // 输出安全字段
do_settings_sections( ‘myplugin_settings’ ); // 输出设置区域和字段
submit_button( ‘保存设置’ );
?>
<input type="hidden" name="trp-form-language" value="ms"/></form>
</div>
<?php
} Patuhi garis panduan keselamatan WordPress
Keselamatan adalah keutamaan tertinggi dalam pembangunan plugin. Semua input dan output daripada pengguna mesti diproses dengan betul. WordPress menyediakan satu siri fungsi untuk membantu anda dalam hal ini:
* 转义输出:使用 esc_html(), esc_attr(), esc_url() 和 wp_kses_post() Fungsi-fungsi seperti ini memastikan bahawa data yang dipaparkan di halaman web adalah selamat.
* 验证和清理输入:在处理表单提交的数据前,使用 sanitize_text_field(), intval(), sanitize_email() Fungsi-fungsi seperti ini perlu dibersihkan.
* Nonce 验证:对于所有涉及状态更改的操作(如表单提交、AJAX 请求),使用 wp_nonce_field(), wp_create_nonce() 和 wp_verify_nonce() Ia digunakan untuk mencegah serangan penggodaman jenis Cross-Site Request Forgery (CSRF).
* 能力检查:使用 current_user_can() Fungsi ini digunakan untuk memeriksa sama ada pengguna semasa mempunyai hak untuk melakukan sesuatu operasi (seperti…). ‘edit_posts’, ‘manage_options’)。
RINGKASAN
Pembangunan plugin untuk WordPress adalah proses yang sistematik, bermula dengan memahami struktur asas (hook, maklumat header), kemudian bergerak lebih mendalam ke arah pelaksanaan fungsi, pengurusan data, pembinaan antara muka, dan pengukuhan keselamatan. Dengan memulakan dengan plugin yang mudah seperti “pengisytiharan hak cipta”, pembangun boleh dengan cepat memperoleh pemahaman yang jelas tentang aliran kerja pembangunan plugin. Selanjutnya, mereka boleh belajar menggunakan API pilihan (option API) dan… wpdb Menggunakan kelas untuk melakukan operasi data merupakan langkah yang penting dalam menyimpan maklumat yang kompleks. Akhirnya, dengan membina antara muka belakang yang mesra pengguna menggunakan API yang telah disediakan, serta mematuhi sepenuhnya garis panduan pengkodan keselamatan WordPress, ia menjadi kunci untuk memastikan bahawa plugin tersebut profesional, boleh dipercayai, dan digunakan secara meluas. Amalan yang berterusan, serta membaca kod sumber plugin inti dan plugin lain yang berkualiti tinggi, merupakan cara terbaik untuk meningkatkan kemahiran pengembangan.
FAQ - Soalan Lazim
Berapa banyak fail yang diperlukan untuk sebuah plugin WordPress?
Satu plugin WordPress yang lengkap dengan semua fungsi boleh terdiri daripada hanya satu fail PHP sahaja. Selagi fail tersebut mengandungi maklumat penunjuk kepala (header) plugin yang betul dan mampu melaksanakan fungsi yang diinginkan, WordPress akan mengenali serta mengaktifkannya. Bagi plugin yang lebih kompleks, pembahagian fail dan direktori kepada beberapa bahagian adalah disyorkan demi memudahkan proses penyelenggaraan.
Bagaimana untuk membuat plugin menyokong terjemahan dalam berbilang bahasa?
WordPress menggunakan teknologi GNU gettext untuk melaksanakan pengaturcaraan antarabangsa (i18n). Anda perlu melakukan beberapa perkara berikut: Pertama, pada bahagian atas plugin dan di semua tempat di mana teks perlu diterjemahkan, gunakan kod seperti… __(‘文本’, ‘your-text-domain’) 或 _e(‘文本’, ‘your-text-domain’) Fungsi tersebut perlu dibungkus (dipaketkan) terlebih dahulu. Kemudian, gunakan alat seperti Poedit untuk menghasilkan fail template .pot, serta mencipta fail .po dan .mo untuk bahasa yang bersesuaian. zh_CN.poAkhirnya, melalui… load_plugin_textdomain() Fungsi tersebut memuatkan fail terjemahan semasa plugin dimulakan (diproses).
Bagaimanakah fail JavaScript dan CSS dalam plugin harus dimuat dengan betul?
Untuk memastikan keserasian dan mengelakkan konflik, fail sumber tidak sepatutnya dilinkkan terus dalam HTML. Untuk sumber yang digunakan pada bahagian hadapan (front-end), kaedah tertentu perlu digunakan. wp_enqueue_script() 和 wp_enqueue_style() Fungsi, dan pasangkannya ke wp_enqueue_scripts Pada “action hook”. Bagi sumber-sumber pada halaman pentadbir latar belakang (backend administrator), ia perlu dipasang (mounted) ke sana. admin_enqueue_scripts Pada “hook” tersebut, fungsi-fungsi ini membenarkan anda menentukan kebergantungan (dependencies) dan nombor versi (version numbers), serta memastikan bahawa sumber yang sama hanya dimuat turun sekali sahaja.
Bagaimana untuk melakukan penyelidikan dan pembetulan (debugging) semasa membangunkan plugin?
WordPress menyediakan alat pembangunan (debugging tools) yang sangat kuat. Pertama sekali, pada laman web… wp-config.php Dalam fail tersebut, akan… WP_DEBUG Konstanta ditetapkan kepada trueIni akan memaparkan ralat PHP, amaran, dan notis secara terus pada halaman web. Anda juga boleh mengaktifkannya pada masa yang sama. WP_DEBUG_LOG(Record the error in…) wp-content/debug.log Fail) dan WP_DEBUG_DISPLAY(Kawalan sama ada untuk menunjukkan pada halaman atau tidak). Selain itu, gunakan… error_log() Menggunakan fungsi untuk menulis log ke dalam fail yang disesuaikan juga merupakan kaedah yang berkesan untuk melacak pemboleh ubah dan proses.
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