Untuk mengembangkan sebuah plugin WordPress, pertama-tama Anda perlu berada di direktori instalasi WordPress. wp-content/plugins Buatlah sebuah folder khusus di dalam folder tersebut. Nama folder ini sebaiknya berkaitan dengan fungsi utama atau nama plugin Anda, dan disarankan untuk menggunakan huruf kecil serta tanda hubung (-), misalnya: my-first-plugin。
Selanjutnya, Anda perlu membuat file plugin utama di dalam folder ini. File tersebut umumnya diberi nama sesuai dengan nama plugin tersebut, misalnya… my-first-plugin.phpFile ini merupakan pintu masuk (entry point) untuk plugin, dan bagian atasnya harus memuat sebuah komentar header plugin yang sesuai dengan standar WordPress. Blok komentar ini berfungsi untuk memberikan informasi dasar tentang plugin kepada sistem WordPress, dan merupakan kunci agar plugin dapat dikenali serta diaktifkan.
Sebuah komentar di bagian awal plugin yang tipikal ditampilkan sebagai berikut:
推荐阅读 Belajar mengembangkan plugin WordPress dari nol: panduan lengkap dan latihan praktis.。
<?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 Anda membuat dan mengisi file tersebut, Anda akan dapat melihat plugin Anda di halaman “Plugins” di panel administrasi WordPress, dan kemudian mengaktifkannya. Ini menandakan bahwa perjalanan pengembangan plugin Anda telah resmi dimulai.
Memahami struktur dasar plugin
Sebuah plugin WordPress yang terstruktur dengan baik tidak hanya mudah untuk diperawat oleh pengguna sendiri, tetapi juga mudah dipahami oleh pengembang lain. Mengikuti metode pengorganisasian yang standar akan membuat kode Anda lebih jelas dan lebih profesional.
Cara pengorganisasian file dan direktori inti
Selain berkas plugin utama, sebuah plugin yang memiliki fungsi yang lengkap biasanya akan mencakup beberapa direktori dan berkas lainnya. Misalnya,includes/ Direktori digunakan untuk menyimpan file-file kelas atau fungsi PHP yang esensial.admin/ Direktori tersebut berisi kode yang berkaitan dengan antarmuka manajemen backend.public/ 或 frontend/ Direktori tersebut berisi kode yang ditujukan untuk pengunjung situs web.assets/ Direktori digunakan untuk menyimpan sumber daya statis seperti JavaScript, CSS, dan gambar.
Selain itu, mungkin juga diperlukan… languages/ Direktori tersebut berisi file-file terjemahan internasional (.po/.mo), serta satu file lainnya. uninstall.php File tersebut digunakan untuk menangani proses pembersihan ketika plugin dihapus. Struktur direktori yang tepat merupakan dasar untuk membuat plugin yang mudah dipelihara dan dapat diperluas.
(Lifecycle of Plugins and Standard Hooks)
Plugin WordPress berinteraksi dengan sistem inti melalui serangkaian “hook” (pautan/koneksi). Untuk memahami siklus hidup sebuah plugin, kuncinya adalah memahami urutan eksekusi hook-hook tersebut. Ketika WordPress memproses sebuah permintaan (request), ia akan secara berurutan memuat file-file inti, tema (theme), dan plugin-plugin yang telah diaktifkan.
推荐阅读 Panduan Lengkap Pengembangan Plugin WordPress: Dari Dasar hingga Penerapan Praktis。
Pengembang plugin dapat memanfaatkannya. register_activation_hook Eksekusi tugas sekali saja saat plugin diaktifkan, misalnya membuat tabel dalam basis data. Sama juga.register_deactivation_hook Digunakan untuk menangani operasi ketika plugin dinonaktifkan (perhatikan, ini bukan proses penghapusan). register_uninstall_hook Atau yang independen… uninstall.php File tersebut digunakan untuk membersihkan data ketika plugin dihapus dari WordPress.
Dalam penggunaan sehari-hari, dua jenis hook yang paling umum digunakan adalah Action dan Filter. Action memungkinkan Anda untuk melakukan suatu tindakan pada saat tertentu (misalnya, pada saat sebuah event terjadi). initUntuk mengeksekusi suatu fungsi, Anda perlu memasukkan kode yang sesuai. Sementara itu, filter memungkinkan Anda untuk mengubah data yang diteruskan ke fungsi lain. the_content)。
Mengimplementasikan fungsi inti dan interaksi keamanan
Tujuan utama dari pengembangan plugin adalah untuk menambahkan fitur baru ke WordPress. Baik itu dengan menambahkan singkatan (shortcut), membuat alat bantu (tool), maupun memproses data formulir, semua harus mematuhi standar keamanan dan interaksi yang ditetapkan oleh WordPress.
Buatlah kode singkat untuk menghasilkan konten.
Shortcode adalah alat yang sangat berguna yang memungkinkan pengguna untuk memasukkan konten dinamis ke dalam artikel atau halaman dengan hanya menggunakan satu tag sederhana. Anda dapat menggunakannya… add_shortcode Fungsi ini digunakan untuk mendaftarkan kode singkat (short code) Anda sendiri.
Sebagai contoh, kode berikut mendaftarkan sebuah entitas dengan nama… greet Kode singkat tersebut menerima satu parameter. name “Properti…” (Property…) dan sapa pengguna: “Halo!” (Hello!)
function myplugin_greet_shortcode( $atts ) {
// 使用 shortcode_atts 函数设置默认值并合并用户属性,确保安全性
$atts = shortcode_atts( array(
'name' => '访客',
), $atts, 'greet' );
// 在输出前对用户输入进行转义
$name = esc_html( $atts['name'] );
return '<p>Halo, '.$name.'! Selamat datang di situs web ini.</p>'php
add_shortcode('greet', 'myplugin_greet_shortcode'); Pengguna dapat memasukkan teks di editor artikel. [greet name=“小明”]Pada bagian frontend, akan muncul pesan “Halo, Xiao Ming! Selamat datang di situs web ini.” Ingatlah bahwa semua data yang diperoleh dari pengguna harus melalui proses ekstraksi (escape) atau validasi yang sesuai sebelum ditampilkan. Hal ini sama seperti yang digunakan dalam contoh di atas. esc_html。
推荐阅读 Panduan Memulai Pengembangan Plugin WordPress: Membuat Plugin Kustom Pertama Anda dari Nol.。
Menambahkan halaman pengaturan untuk plugin
Untuk plugin yang memerlukan konfigurasi dari pengguna, membuat halaman opsi di backend merupakan praktik yang umum dilakukan. Anda dapat menggunakan “Settings API” dari WordPress untuk menambahkan halaman dan field dengan aman dan mudah; API ini secara otomatis menangani proses verifikasi keamanan (nonce) dan penyimpanan data.
Pertama, gunakan add_options_page 或 add_menu_page Fungsi-fungsi tersebut perlu ditambahkan sebagai item menu dan halaman di bagian administrasi (back end). Setelah itu, gunakanlah fungsi-fungsi tersebut sesuai kebutuhan. register_setting、add_settings_section 和 add_settings_field Gunakan fungsi-fungsi seperti tersebut untuk mendefinisikan opsi pengaturan Anda.
Berikut adalah kode kerangka untuk membuat halaman pengaturan sederhana:
function myplugin_add_admin_menu() {
add_options_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'myplugin-settings', // 菜单 Slug
'myplugin_settings_page' // 用于渲染页面的回调函数
);
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
function myplugin_settings_init() {
register_setting( 'myplugin_settings_page', 'myplugin_settings' );
add_settings_section( 'myplugin_section', '基础设置', null, 'myplugin_settings_page' );
add_settings_field(
'api_key',
'API 密钥',
'myplugin_api_key_field_render', // 渲染输入字段的函数
'myplugin_settings_page',
'myplugin_section'
);
}
add_action( 'admin_init', 'myplugin_settings_init' );
function myplugin_api_key_field_render() {
$options = get_option( 'myplugin_settings' );
$value = isset( $options['api_key'] ) ? esc_attr( $options['api_key'] ) : '';
echo '<input type="text" name="myplugin_settings[api_key]" value="' . $value . '" />';
}
function myplugin_settings_page() {
?>
<form action='/id/options.php/' method='post' data-trp-original-action="options.php">
<h2>Pengaturan plugin saya</h2>
<?php
settings_fields( 'myplugin_settings_page' );
do_settings_sections( 'myplugin_settings_page' );
submit_button();
?>
<input type="hidden" name="trp-form-language" value="id"/></form>
\n<?php
} Dengan menggunakan API pengaturan, Anda dapat memastikan bahwa opsi-opsi plugin Anda disimpan dengan aman. wp_options Data tersebut terdapat dalam tabel, dan antarmuka pengelolaannya sesuai dengan gaya desain WordPress.
(Mengikuti praktik terbaik dalam pengembangan.)
编写一个能长期稳定运行、易于维护且与其他插件和谐共处的插件,需要遵循一些关键的最佳实践。
Pastikan keamanan kode.
Keamanan merupakan hal yang paling penting dalam pengembangan plugin. Semua masukan dari pengguna (termasuk data dari URL, formulir, Cookies, dan basis data) harus diverifikasi, dibersihkan, dan di-escapasi. Gunakan serangkaian fungsi yang disediakan oleh WordPress untuk melakukannya. esc_html、esc_url、sanitize_text_field Gunakan untuk memproses hasil keluaran. wp_verify_nonce 和 check_admin_referer Ini digunakan untuk memverifikasi keabsahan permintaan, guna mencegah serangan penipuan permintaan antar situs (Cross-Site Request Forgery/CSRF).
Saat melakukan kueri pada basis data, pastikan untuk menggunakan… $wpdb Metode yang disediakan oleh kelas (seperti…) prepareHal ini dilakukan untuk mencegah serangan SQL injection. Jangan pernah menyatukan langsung input dari pengguna ke dalam pernyataan SQL.
Mengimplementasikan internasionalisasi dan lokalisasi
Agar plugin Anda dapat digunakan oleh pengguna WordPress di seluruh dunia, internasionalisasi (i18n) sangat penting. Artinya, Anda perlu menggunakan fungsi penerjemahan yang disediakan oleh WordPress untuk mengatur semua teks yang ditampilkan kepada pengguna.
Definisikan semuanya di dalam komentar di bagian atas plugin Anda. Text Domain(Contohnya, my-first-plugindan Domain PathDalam kode, gunakan metode tertentu untuk menerjemahkan semua string yang perlu diterjemahkan. __() Silakan berikan teks yang ingin diterjemahkan. _e() 进行翻译并直接输出,使用 _n() Mengatur bentuk tunggal dan jamak.
Contohnya:$text = __(‘Hello World’, ‘my-first-plugin’);Kemudian, Anda dapat menggunakan alat seperti Poedit untuk menghasilkannya. .pot File template, digunakan oleh penerjemah untuk membuat terjemahan. .po 和 .mo File: Masukkan file terjemahan ke dalam direktori akar plugin. /languages Setelah folder tersebut ditambahkan, WordPress akan secara otomatis memuat terjemahan yang sesuai berdasarkan bahasa situs web tersebut.
Mengoptimalkan kode dan mempertimbangkan aspek kinerja (performance).
Plugin dengan kinerja yang buruk dapat memperlambat seluruh situs web. Sebaiknya dihindari menjalankan kode yang tidak diperlukan dalam jumlah besar setiap kali halaman diunduh. Skrip dan gaya yang hanya digunakan di latar belakang sebaiknya diatur menggunakan kondisi tertentu (misalnya, hanya dijalankan jika kondisi tertentu terpenuhi). is_admin()Hanya diunduh di latar belakang; sumber daya front-end akan diunduh melalui… wp_enqueue_script() 和 wp_enqueue_style() Pada hook yang sesuai (seperti…) wp_enqueue_scriptsMengambil data dari sumber tersebut dan memuatnya secara berurutan dalam antrian.
Untuk operasi yang memakan waktu lama atau pemanggilan API eksternal, pertimbangkan untuk menggunakan Transients API dari WordPress.set_transient, get_transientMelakukan proses pengecualian (caching). Pada saat yang sama, pastikan bahwa plugin tersebut dapat dihapus atau dinonaktifkan dengan cara yang benar. uninstall.php Bersihkan tabel dan opsi basis data yang Anda buat, namun lakukan dengan hati-hati, dan berikan opsi kepada pengguna untuk memutuskan apakah data tersebut akan dihapus atau tidak.
Debugging, Testing, and Publishing
Sebelum menyerahkan plugin Anda kepada pengguna, melakukan debugging, pengujian, dan persiapan yang menyeluruh merupakan langkah kunci untuk memastikan keberhasilan.
Menggunakan alat debugging WordPress
Pada tahap pengembangan, sangat disarankan untuk mengaktifkan mode debug (debug mode) di WordPress. wp-config.php Pengaturan dalam file define(‘WP_DEBUG’, true);Ini akan membuat semua kesalahan (errors), peringatan (warnings), dan pemberitahuan (notifications) PHP terlihat, sehingga membantu Anda menemukan masalah dengan cepat. Anda juga dapat mengaktifkannya secara bersamaan. WP_DEBUG_LOG Catatkan kesalahan ke dalam berkas log, atau aktifkan fitur tersebut. SCRIPT_DEBUG Ini digunakan untuk memuat file JavaScript dan CSS yang belum dikompresi, agar memudahkan proses debugging (pemecahan masalah).
Menyiapkan informasi untuk penerbitan plugin
Jika Anda berencana untuk mengirimkan plugin Anda ke direktori plugin resmi WordPress.org, Anda perlu menyiapkan serangkaian materi. Ini termasuk sebuah dokumentasi yang lengkap… readme.txt File tersebut harus memiliki format yang sesuai dengan persyaratan WordPress, dan harus mencakup deskripsi, langkah-langkah instalasi, pertanyaan umum, catatan pembaruan, dan lainnya. Anda juga perlu menyediakan gambar banner dan ikon berkualitas tinggi, serta mengisi deskripsi repositori SVN untuk plugin tersebut.
Di tingkat kode, pastikan Anda telah menyelesaikan persiapan untuk mendukung internasionalisasi (internationalization) dan periksa dengan cermat apakah semua kode memenuhi standar penulisan kode WordPress. Anda dapat menggunakan PHP_CodeSniffer di lingkungan lokal bersama dengan aturan standar penulisan kode WordPress untuk melakukan pemeriksaan tersebut.
Melakukan pengujian kompatibilitas lintas lingkungan
Sebelum dipublikasikan, Anda harus menguji plugin Anda dalam berbagai lingkungan. Ini mencakup berbagai versi WordPress (terutama versi saat ini dan versi utama sebelumnya), berbagai versi PHP (seperti PHP 7.4, 8.0, 8.1), berbagai versi basis data (MySQL/MariaDB), serta menguji kompatibilitasnya dengan tema dan plugin populer lainnya. Pastikan bahwa plugin Anda tidak menampilkan kesalahan atau peringatan pada setiap tahap aktivasi, non-aktifkan, pengaturan, dan penggunaan.
Menyimpulkan.
Pengembangan plugin WordPress merupakan proses mengubah ide-ide kreatif menjadi fitur-fungsi yang dapat digunakan dalam ekosistem yang luas ini. Mulailah dengan membuat berkas utama yang memenuhi standar, kemudian bangunlah struktur direktori yang teratur. Pahami dengan baik mekanisme interaksi inti, yaitu action dan filter hook. Saat mengimplementasikan fitur-fitur spesifik seperti kode singkat (shortcodes) dan halaman pengaturan (setting pages), pastikan untuk menerapkan praktik pengkodean yang aman (verifikasi data, pengelolaan karakter dengan benar, pencegahan serangan injection). Ikuti praktik terbaik, seperti mengoptimalkan kinerja aplikasi, mengelola sumber daya dengan baik, dan menggunakan alat-alat debugging untuk menjaga kualitas kode. Setelah itu, lakukan pengujian yang komprehensif di berbagai lingkungan (cross-environment testing) dan siapkan plugin tersebut untuk dipublikasikan. Terus belajar dari manual resmi dan sumber daya komunitas WordPress untuk terus meningkatkan kemampuan dalam pengembangan plugin.
FAQ - Pertanyaan yang Sering Diajukan.
Apa saja pengetahuan dasar yang diperlukan untuk mengembangkan plugin WordPress?
Anda perlu memiliki dasar pemrograman PHP yang kuat, karena logika inti dari plugin tersebut ditulis menggunakan PHP. Selain itu, Anda perlu memahami dasar-dasar HTML, CSS, dan JavaScript untuk membuat antarmuka pengguna (user interface) dan interaksi yang efektif. Yang paling penting, Anda harus mengenal dengan baik arsitektur dasar WordPress, termasuk sistem hook-nya (actions dan filters), siklus tema (theme cycle), struktur basis data, serta penggunaan berbagai fungsi dan kelas inti WordPress.
Bagaimana cara menghindari konflik antara plugin saya dengan plugin lainnya?
Menambahkan prefiks unik untuk semua fungsi, kelas, konstanta, tag aksi/filter, serta nama opsi merupakan cara paling efektif untuk mencegah terjadinya konflik. Jangan menggunakan nama-nama umum. add_user() 或 $countSebaliknya, Anda sebaiknya menggunakan prefiks yang berkaitan dengan plugin Anda, misalnya… myplugin_add_user() 或 $myplugin_countMengenkapsulasi kode dalam kelas atau namespace juga merupakan praktik yang baik. Selain itu, saat menyusun skrip pengaturan antrian (queueing scripts) dan gaya tampilan (styles), gunakan handle (identifikasi unik) yang konsisten, serta pertimbangkan untuk memuat sumber daya (resources) sesuai dengan kebutuhan.
Di mana saya sebaiknya menyimpan data plugin?
Untuk opsi konfigurasi yang sederhana, gunakan API Options dari WordPress.add_option, get_option, update_option) Menyimpan data di wp_options Cara yang paling sederhana dan standar adalah dengan menggunakan tabel. Jika Anda perlu menyimpan sejumlah besar data khusus yang terstruktur (misalnya produk, pesanan, dll.), maka Anda sebaiknya membuat tabel basis data khusus. $wpdb Objek tersebut akan diaktifkan saat plugin diaktifkan. dbDelta() Fungsi tersebut digunakan untuk membuat dan memperbarui struktur tabel, sehingga dapat memastikan kompatibilitas antar versi basis data.
Setelah plugin dihapus, bagaimana cara membersihkan data yang dibuat olehnya?
WordPress menyediakan dua metode utama. Yang pertama adalah dengan menggunakan… register_uninstall_hook() Fungsi tersebut mendaftarkan sebuah “hook” untuk proses pengunduhan (uninstallation). Cara kedua, yang juga lebih disarankan, adalah dengan membuat sebuah berkas terpisah di direktori akar (root directory) plugin tersebut. uninstall.php File. Dalam file ini, Anda perlu memeriksa apakah ada pemanggilan (call) dari dalam WordPress. WP_UNINSTALL_PLUGIN Konstanta, kemudian lakukan proses penghapusan opsi kustom (dengan menggunakan…) delete_optionPembersihan termasuk menghapus konten yang tidak diinginkan dari halaman web, tabel basis data, dan objek lainnya. Harap perhatikan bahwa Anda harus memberitahu pengguna dalam deskripsi plugin apa saja data yang akan dihapus akibat proses pembersihan tersebut.
Selanjutnya, apa yang harus kita lakukan selanjutnya?
Bacaan lanjutan dan pengetahuan praktis.
Konten-konten berikut terkait dengan topik artikel ini dan cocok untuk dibaca lebih lanjut. Lebih baik mulai dengan artikel yang paling dekat dengan pertanyaan Anda saat ini, lalu secara bertahap memperluas ke topik terkait, yang biasanya akan memberikan hasil yang lebih baik.
- Panduan Pengembangan Plugin WordPress: Membuat Plugin Kustom Pertama Anda Dari Nol
- Menjadi Pengembang Plugin WordPress: Panduan Lengkap Dari Nol Sampai Satu
- Panduan Lengkap untuk Pengembangan Plugin WordPress: Dari Pemula hingga Ahli dalam Membuat Ekstensi Profesional.
- Pengembangan Plugin WordPress: Dari Pemula Hingga Ahli: Membangun Plugin Kustom Pertamamu
- Dari Nol ke Satu: Panduan Lengkap untuk Mengembangkan Plugin WordPress Pertama Anda Secara Bertahap