Dari nol: Infrastruktur pengembangan plugin WordPress.

Baca dalam 2 menit.
2026-03-17
2026-06-03
2,519
Saya mendapatkan komisi ketika Anda berbelanja melalui tautan di bawah ini, tanpa biaya tambahan untuk Anda.

Dari nol: Infrastruktur pengembangan plugin WordPress.

Untuk mengembangkan sebuah plugin WordPress, pertama-tama Anda perlu memahami struktur dasarnya. File yang paling penting dalam sebuah plugin adalah file utama (main file), yang biasanya diberi nama sesuai dengan nama plugin tersebut.my-first-plugin.phpFile ini tidak hanya berisi seluruh kode fungsionalitas plugin, tetapi yang lebih penting adalah komentar header informasi plugin yang terletak di bagian atasnya. Header tersebut merupakan kunci bagi WordPress untuk mengenali plugin tersebut.

Komentar di bagian atas plugin harus mencakup metadata tertentu. Berikut adalah contoh paling dasar:

<?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
 */

File tersebut telah dibuat, dan kemudian dimasukkan ke dalam…/wp-content/plugins/Setelah menambahkan plugin tersebut ke dalam direktori yang ditentukan, Anda dapat melihatnya di halaman “Plugins” di panel administrasi WordPress, dan kemudian mengaktifkannya atau menonaktifkannya sesuai kebutuhan. Selanjutnya, sangat penting untuk memahami urutan pengunduhan (loading) dan eksekusi kode plugin tersebut. Saat WordPress mengunduh plugin, plugin-protein tersebut akan diunduh secara berurutan berdasarkan abjad./wp-content/plugins/Semua file utama plugin yang valid terdapat dalam direktori tersebut. Oleh karena itu, jika plugin Anda bergantung pada fungsi dari plugin lain, Anda tidak boleh mengasumsikan bahwa plugin tersebut telah terload dengan sendirinya. Dalam kasus ini, Anda perlu menggunakan…plugins_loadedAction hook ini digunakan untuk memastikan bahwa kode dieksekusi pada waktu yang tepat.

推荐阅读 Panduan Lengkap Pengembangan Plugin WordPress: Dari Nol hingga Membangun Ekstensi Berlevel Bisnis

Memahami Hook dengan Mendalam: Mekanisme Aksi dan Filter

Filsafat inti dalam pengembangan plugin WordPress adalah “Hook” (Pengait). Hook memungkinkan Anda untuk menyisipkan kode Anda sendiri ke dalam proses eksekusi inti WordPress, tema, atau plugin lainnya, tanpa perlu mengubah file asli. Hook terbagi menjadi dua kategori utama: Action Hooks dan Filter Hooks.

UltaHost – Hosting untuk WordPress
Jaminan pengembalian uang dalam 30 hari, bandwidth dan basis data yang tidak terbatas, perlindungan DDoS gratis, diskon 50% untuk pembelian selama 3 tahun (dari harga normal: 50%).

Action hooks memungkinkan Anda untuk menjalankan fungsi kustom saat peristiwa tertentu terjadi. Misalnya, ketika sebuah artikel diterbitkan…publish_post), saat memuat sumber daya di bagian atas halaman web (wp_enqueue_scripts) Atau saat melakukan inisialisasi di panel administrasi (admin_initUntuk menggunakan sebuah action hook, Anda perlu menggunakan…add_action()Fungsi tersebut “menggantungkan” fungsi callback Anda pada hook yang tersedia.

add_action( 'init', 'myplugin_custom_init' );
function myplugin_custom_init() {
    // 在WordPress初始化时执行
    // 例如,注册一个自定义文章类型
}

Filter hooks digunakan untuk memodifikasi data. Mereka memungkinkan Anda untuk menangkap dan mengubah variabel-variabel yang diteruskannya, lalu mengembalikannya kembali. Misalnya, untuk memodifikasi isi sebuah artikel.the_content), mengubah panjang kutipan (excerpt_length) atau memodifikasi hasil pencarian (the_postsUntuk menggunakan filter, Anda perlu memanggilnya.add_filter()Fungsi.

add_filter( 'the_title', 'myplugin_custom_title' );
function myplugin_custom_title( $title ) {
    // 修改文章标题
    return '前缀:' . $title;
}

Membuat hook kustom

Selain menggunakan ratusan hook bawaan yang disediakan oleh WordPress, pengembang plugin tingkat lanjut juga dapat membuat hook mereka sendiri untuk digunakan oleh pengembang lain dalam melakukan ekspansi (penambahan fitur atau fungsi baru).do_action()Untuk membuat sebuah “action hook”, gunakan…apply_filters()Mari kita buat sebuah filter hook.

// 在插件代码中定义一个自定义动作钩子
do_action( 'myplugin_after_something_happens', $some_data );

// 在插件代码中定义一个自定义过滤器钩子
$value = apply_filters( 'myplugin_filter_some_value', $default_value );

Membangun fitur plugin: Keamanan dan praktik terbaik

Saat menyusun fungsi sebuah plugin, keamanan merupakan faktor utama yang perlu dipertimbangkan. Jangan pernah mempercayai data yang dimasukkan oleh pengguna. Semua data dari sumber eksternal (seperti formulir, parameter URL, Cookie) harus diverifikasi, dibersihkan, dan di-escapasi (dilindungi dari potensi serangan).

推荐阅读 Panduan Memulai Pengembangan Plugin WordPress: Dari Nol hingga Mahir dalam Membuat Fungsi Khusus (Custom Functions)

Data Validation and Escaping

Untuk input, gunakan…sanitize_text_field()sanitize_email()intval()Gunakan fungsi-fungsi tertentu untuk melakukan pembersihan data. Untuk data yang akan ditampilkan di halaman HTML, gunakan…esc_html()esc_attr()wp_kses_post()Melakukan proses “escaping” untuk mencegah serangan jenis Cross-Site Scripting (XSS).

$user_input = $_POST['some_field'];
$clean_input = sanitize_text_field( $user_input );

// 输出时
echo '<div class="' . esc_attr( $class_name ) . '">'`. esc_html($clean_input)`.'</div>';

Berinteraksi dengan basis data

WordPress menyediakan…$wpdbObjek global digunakan untuk melakukan operasi langsung pada basis data, namun sebaiknya fungsi bawaan WordPress digunakan terlebih dahulu.get_post()update_option()Dan sebagainya. Jika memang harus menggunakan SQL, pastikan untuk melakukannya dengan benar.$wpdb->prepare()Cara untuk mencegah serangan SQL injection.

global $wpdb;
$user_id = intval( $_GET['id'] );
$results = $wpdb->get_results(
    $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}my_table WHERE user_id = %d", $user_id )
);

Tambahkan menu dan halaman administrasi.

Membuat halaman konfigurasi untuk sebuah plugin merupakan kebutuhan yang umum. Anda dapat menggunakan…add_menu_page()add_options_page()Fungsi-fungsi tersebut digunakan untuk menambahkan item menu di bagian belakang (backend). Fungsi-fungsi ini seharusnya dikerjakan…admin_menuDipanggil dalam action hook.

hosting.com hosting bersama
Kinerja tinggi, dilengkapi dengan CPU AMD EPYC, penyimpanan SSD NVMe, dan LiteSpeed, dukungan internal ahli 24 jam sehari, langkah-langkah keamanan canggih termasuk SSL, brute force, malware, dan perlindungan DDoS, menghemat hingga 731 TB/bulan.
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
function myplugin_add_admin_menu() {
    add_options_page(
        '我的插件设置', // 页面标题
        '我的插件',     // 菜单标题
        'manage_options', // 权限
        'myplugin-slug',  // 菜单别名
        'myplugin_settings_page' // 用于呈现页面的回调函数
    );
}
function myplugin_settings_page() {
    // 输出设置页面HTML
    echo '<div class="wrap"><h1>Pengaturan</h1></div>';
}

Pengaturan Penerbitan Plugin: Internasionalisasi dan Organisasi Kode

Setelah fitur plugin tersebut diperbaiki, untuk menjangkau lebih banyak pengguna dan memudahkan proses pemeliharaan, perlu diperhatikan aspek internasionalisasi (penyesuaian fitur agar dapat digunakan di berbagai bahasa) serta pengorganisasian kode program.

Menginternasionalisasi plugin.

Internasionalisasi (i18n) memungkinkan plugin Anda diterjemahkan ke bahasa lain. Untuk melakukan ini, Anda perlu menggunakan fungsi terjemahan yang tersedia di WordPress.__()_e()_x()Gabungkan semua string yang dapat dilihat oleh pengguna, lalu deklarasikan di bagian awal plugin.Text Domain(Contohnya,my-first-plugin)。

// 在代码中
$greeting = __( 'Hello, World!', 'my-first-plugin' );
_e( 'This text will be echoed and translatable.', 'my-first-plugin' );

// 然后,使用如Poedit等工具生成 .pot 翻译模板文件。

Pengorganisasian kode yang termodulasi

Hindari menumpuk semua kode dalam satu file utama. Sebuah praktik yang baik adalah membagi kode dengan fungsi yang berbeda ke dalam file-file yang terpisah..phpFile tersebut berisi berbagai konten, dan file utama (main file) memuat file-file tersebut sebagai bagian darinya. Contohnya:
- includes/admin/ Direktori tersebut berisi kode terkait bagian belakang (backend) dari aplikasi.
- includes/public/ Direktori tersebut berisi kode-kode terkait bagian frontend (front-end).
- includes/class-*.php Berisi definisi kelas-kelas utama.
- assets/css/assets/js/ Tempat untuk menyimpan file gaya (style sheets) dan skrip (scripts).

推荐阅读 Panduan Akhir Pengembangan Plugin WordPress: Keterampilan Inti untuk Membangun Fungsi Khusus dari Nol

Menggunakan pemrograman berorientasi objek (Object-Oriented Programming/OOP) dapat membantu mengorganisir kode dengan lebih baik, menghindari konflik nama fungsi, dan meningkatkan tingkat kegunaan kembali kode (reusability). Definisikan sebuah kelas utama (main class), lalu pasang semua hook yang diperlukan di dalam metode konstruktor (constructor)nya.

class My_First_Plugin {
    public function __construct() {
        add_action( 'init', array( $this, 'init_method' ) );
        add_filter( 'the_content', array( $this, 'filter_content' ) );
    }
    public function init_method() {
        // 初始化
    }
    public function filter_content( $content ) {
        return $content . '<p>Menambahkan konten ke plugin</p>';
    }
}
new My_First_Plugin();

Menyimpulkan.

Pengembangan plugin WordPress adalah proses untuk mengintegrasikan fitur khusus secara mulus ke dalam ekosistem WordPress. Semuanya dimulai dengan sebuah file berisi komentar di bagian awal plugin yang memenuhi standar yang ditetapkan. Inti dari pengembangan plugin terletak pada pemanfaatan yang mahir terhadap “action hooks” dan “filter hooks”, sehingga perilaku WordPress dapat diperluas atau diubah secara berbasis peristiwa (event-driven). Selama proses pemrograman, keamanan harus menjadi prioritas utama; data perlu diverifikasi, dibersihkan, dan di-escape dengan benar. Seiring dengan bertambahnya fitur dalam plugin, organisasi kode yang baik (termasuk desain berorientasi objek dan struktur file yang termodulasi), serta dukungan terhadap internasionalisasi, menjadi langkah kunci untuk meningkatkan kemudahan pemeliharaan, profesionalitas, dan jangkauan pengguna plugin tersebut. Dengan mengikuti praktik terbaik ini, Anda akan dapat membuat plugin WordPress yang kuat, aman, dan mudah didistribusikan.

Hosting bersama InterServer.
Hosting bersama seharga $2,50 USD per bulan, diskon $0,1 USD untuk bulan pertama dengan kode promo tryinterserver, serta 461 skrip aplikasi cloud yang dapat diinstal dengan sekali klik.

FAQ - Pertanyaan yang Sering Diajukan.

Apa saja pengetahuan dasar yang diperlukan untuk mengembangkan plugin WordPress?

Anda perlu menguasai dasar-dasar bahasa PHP, karena WordPress beserta pluginnya ditulis menggunakan PHP. Selain itu, Anda juga perlu memiliki pemahaman dasar tentang HTML, CSS, dan JavaScript untuk mengelola tampilan dan interaksi di sisi pengguna (front end). Yang paling penting adalah memahami proses kerja dasar WordPress dan sistem Hook-nya, yang merupakan mekanisme inti dalam pengembangan plugin.

Bagaimana cara mencegah nama fungsi plugin saya bertentangan dengan plugin lain?

Praktik terbaik adalah menggunakan Pemrograman Berorientasi Objek (Object-Oriented Programming/OOP) dengan mengenkapsulasi fungsi-fungsi Anda dalam sebuah kelas, sehingga nama metode dalam kelas tersebut menjadi independen. Jika Anda menggunakan Pemrograman Prosedural, Anda harus menambahkan sebuah prefiks unik untuk semua fungsi, kelas, dan konstanta. Prefiks tersebut dapat berupa singkatan dari nama plugin Anda atau nama merek Anda.myplugin_acme_Dan pastikan konsistensi tersebut dijaga di seluruh kode.

Di mana saya sebaiknya memuat file JavaScript dan CSS dari plugin tersebut?

Untuk memastikan keakuratan dan kinerja yang optimal, jangan pernah langsung menghubungkan file sumber dalam template HTML. Anda sebaiknya menggunakan fungsi enqueuing (enqueue) yang disediakan oleh WordPress. Untuk file sumber frontend (yang digunakan oleh halaman web), gunakan fungsi tersebut untuk mengatur urutan pengiriman file tersebut.wp_enqueue_script()wp_enqueue_style()Dan montorkanlah ke…wp_enqueue_scriptsDi “action hook”. Untuk sumber daya yang hanya digunakan oleh antarmuka administrasi backend, maka sumber daya tersebut akan di-montekan (dipasang) ke sana.admin_enqueue_scriptsDi atas kait itu.

Bagaimana sebuah plugin menyimpan pengaturan (settings) dan data miliknya sendiri?

Untuk pengaturan yang sederhana dan hanya melibatkan satu nilai, Anda dapat menggunakan WordPress Option API.add_option()get_option()update_option()Untuk data yang lebih kompleks dan terstruktur (misalnya, daftar entri formulir), sebaiknya dibuat tabel basis data khusus. Hal ini dapat dilakukan menggunakan…dbDelta()Fungsi tersebut diaktifkan saat plugin diaktifkan (melalui…)register_activation_hookMembuat atau memperbarui struktur tabel dengan aman.