Mulai dari nol: Membuat plugin WordPress pertamamu.

3 menit baca
2026-03-14
2026-06-04
2,742
Saya mendapatkan komisi ketika Anda berbelanja melalui tautan di bawah ini, tanpa biaya tambahan untuk Anda.

Mulai dari nol: Membuat plugin WordPress pertamamu.

Pengembangan plugin untuk WordPress merupakan cara utama untuk memperluas fungsi dasar WordPress. Dengan membuat plugin, pengembang dapat menambahkan fitur khusus ke situs web tanpa perlu mengubah tema atau file inti WordPress, sehingga memastikan kebebasan fungsi tersebut dan kemampuannya untuk digunakan di situs web lain. Sebuah plugin standar biasanya terdiri dari satu file PHP utama, file sumber daya opsional (seperti CSS, JavaScript), serta paket bahasa (language pack). Memahami struktur dasar sebuah plugin merupakan langkah pertama yang penting dalam proses pengembangan yang sukses.

Struktur dasar dan pembuatan plugin WordPress.

Bentuk dasar dari sebuah plugin adalah sebuah file yang ditempatkan di…/wp-content/plugins/Folder yang terdapat dalam direktori tersebut. Folder ini harus setidaknya berisi satu file PHP utama, dan komentar di bagian awal file tersebut digunakan untuk menyatakan informasi plugin kepada WordPress.

Penulisan komentar di bagian atas plugin (plugin header comments)

Setiap file utama plugin harus dimulai dengan blok komentar PHP tertentu, yang disebut “header plugin”. WordPress menggunakan informasi ini untuk mengenali dan menampilkan plugin Anda di daftar plugin di panel administrasi. Contoh komentar header yang standar adalah sebagai berikut:

推荐阅读 Analisis Mendalam Pengembangan Plugin WordPress: Dari Pemula Hingga Penyesuaian yang Efisien

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

Di antaranya,Plugin NameHal tersebut merupakan keharusan; bidang lainnya bersifat opsional. Namun, demi keutuhan dan profesionalitas plugin, disarankan untuk mengisi semua bidang sebisa mungkin.Text DomainDigunakan untuk internasionalisasi, dan merupakan dasar bagi penerjemahan plugin yang akan datang.

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

Membuat file utama dan direktori untuk plugin

Pertama, di/wp-content/plugins/Buat folder baru di bawah direktori, misalnyamy-first-pluginKemudian, buat file PHP utama di dalam folder tersebut. File tersebut biasanya memiliki nama yang sama dengan nama foldernya.my-first-plugin.phpMasukkan komentar di atas ke dalam file tersebut, lalu simpan file tersebut. Setelah itu, Anda akan dapat melihat dan mengaktifkannya di halaman “Plugin” di panel administrasi WordPress. Saat ini, plugin tersebut belum memiliki fungsi apa pun.

Core Development Concepts: Action Hooks and Filters

Arsitektur plugin WordPress didasarkan pada sistem “hook” (pautan), yang berfungsi sebagai jembatan antara plugin dan inti sistem WordPress. Hook terbagi menjadi dua jenis utama: action hook dan filter hook.

Memahami dan menggunakan action hook (tangkai aksi)

Action hooks memungkinkan Anda untuk menjalankan kode PHP yang disesuaikan pada titik waktu tertentu atau ketika suatu event terjadi. Anda dapat menggunakannya untuk…add_action()Fungsi tersebut akan “menggantungkan” (menghubungkan) fungsi Anda ke sebuah mekanisme tertentu (biasanya disebut “hook”). Sebagai contoh, fungsi tersebut dapat digunakan untuk menambahkan teks secara otomatis di akhir isi sebuah artikel.

function myplugin_add_footer_text( $content ) {
    if ( is_single() ) {
        $content .= '<p>Terima kasih telah membaca!</p>';
    }
    return $content;
}
add_filter( 'the_content', 'myplugin_add_footer_text' );

Perhatikan, contoh ini sebenarnya menggunakan “filter hook” untuk memodifikasi konten. Contoh khas dari “action hook” adalah saat menambahkan menu di panel administrasi (backend).

推荐阅读 Belajar Pengembangan Plugin WordPress Dari Nol: Membangun Fungsi Khusus Pertama Anda

function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',
        '我的插件',
        'manage_options',
        'myplugin-settings',
        'myplugin_settings_page'
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

Di sini,add_action()Memanggil fungsimyplugin_add_admin_menuTerkait dengan (Bound to)admin_menuHook aksi ini akan dipanggil oleh WordPress saat membangun menu latar belakang (backend menu).

Memahami dan menggunakan filter hooks

Filter hooks digunakan untuk memodifikasi data yang dihasilkan oleh WordPress selama proses pemrosesannya. Anda dapat menggunakannya sesuai kebutuhan Anda.add_filter()Fungsi tersebut digunakan untuk “menggantung” (menghubungkan) fungsi lainnya. Fungsi penyaring (filter function) menerima sebuah nilai masukan, mengubahnya, lalu harus mengembalikan nilai yang telah diubah tersebut. Sebagai contoh, misalnya untuk mengubah judul sebuah artikel:

function myplugin_modify_title( $title ) {
    return '精选: ' . $title;
}
add_filter( 'the_title', 'myplugin_modify_title' );

Filter tersebut sangat kuat dan sering digunakan untuk memodifikasi hasil pencarian, teks konten, nilai opsi, serta hampir semua data yang dihasilkan oleh WordPress.

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.

Menambahkan halaman pengaturan dan opsi untuk plugin

Sebuah plugin yang memiliki fitur yang lengkap biasanya perlu menyediakan opsi konfigurasi bagi pengguna. WordPress menyediakan API pengaturan (setting API) untuk membuat halaman opsi konfigurasi dengan cara yang aman dan terstandarisasi.

Membuat menu dan halaman administrasi

Pertama-tama, Anda perlu menggunakan…add_menu_page()add_options_page()Gunakan fungsi-fungsi tertentu untuk menambahkan halaman administrasi. Biasanya, operasi ini dilakukan dengan “menggantungkan” (mounting) komponen terkait ke dalam sistem.admin_menuDi kait tersebut, seperti yang ditunjukkan pada contoh sebelumnya. Di dalamnya,myplugin_settings_pageIni adalah sebuah fungsi panggilan balik (callback function) yang digunakan untuk merender konten HTML halaman pengaturan (setting page).

Mendaftarkan opsi menggunakan API Settings

Settings API menyediakan cara yang aman untuk mendaftarkan, memverifikasi, dan menyimpan pengaturan (settings). Langkah-langkah utamanya meliputi: menggunakan…register_setting()Daftarkan sebuah grup pengaturan, lalu gunakannya.add_settings_section()Tambahkan sebuah blok pengaturan, serta gunakannya.add_settings_field()Tambahkan bidang pengaturan yang spesifik.

推荐阅读 Panduan Lengkap Pengembangan Plugin WordPress: Dari Pemula Hingga Keahlian Praktis

function myplugin_settings_init() {
    // 注册一个设置
    register_setting( 'myplugin_settings', 'myplugin_options' );

    // 添加一个设置区块
    add_settings_section(
        'myplugin_section_general',
        '通用设置',
        'myplugin_section_general_cb',
        'myplugin-settings'
    );

    // 添加一个设置字段
    add_settings_field(
        'myplugin_field_text',
        '欢迎语',
        'myplugin_field_text_cb',
        'myplugin-settings',
        'myplugin_section_general',
        [ 'label_for' => 'myplugin_field_text' ]
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

Kemudian, Anda perlu menulis fungsi panggilan balik (callback function) yang sesuai.myplugin_section_general_cbmyplugin_field_text_cbUntuk menampilkan deskripsi blok dan kotak input HTML untuk bidang. Terakhir, dimyplugin_settings_pageDalam fungsi, digunakan…settings_fields()do_settings_sections()Fungsi tersebut digunakan untuk menampilkan seluruh isi formulir.

Keamanan Plugin dan Praktik Terbaik

Saat mengembangkan plugin, keamanan merupakan faktor utama yang perlu dipertimbangkan. Sebuah plugin yang tidak aman dapat membahayakan seluruh situs web.

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.

Data Validation, Cleaning, and Escaping

Jangan pernah mempercayai data yang dimasukkan oleh pengguna atau data yang berasal dari basis data. Saat memproses setiap jenis input (misalnya $_POST, $_GET), data tersebut harus diverifikasi dan dibersihkan terlebih dahulu. WordPress menyediakan banyak fungsi untuk membantu proses ini.sanitize_text_field(), intval(), wp_kses()Dan sebagainya. Saat mengeluarkan data ke dalam HTML atau JavaScript, proses ekspansi (escape) harus dilakukan menggunakan fungsi-fungsi tertentu.esc_html(), esc_attr(), esc_js()wp_json_encode()

// 接收、清理并保存数据
$user_input = sanitize_text_field( $_POST['my_field'] );
update_option( 'my_option', $user_input );

// 安全地输出数据
echo esc_html( get_option( 'my_option' ) );

Menggunakan metode selain CE (Common Encryption) untuk pemeriksaan hak akses

Untuk semua permintaan formulir latar belakang atau permintaan AJAX yang dikirimkan oleh plugin, Anda harus menggunakan mekanisme nonce dari WordPress untuk memverifikasi keabsahan dan uniknya permintaan tersebut, guna mencegah serangan penipuan berupa permintaan lintas situs (cross-site request forgery). Selain itu, gunakan juga…current_user_can()Fungsi tersebut memeriksa apakah pengguna saat ini memiliki hak akses yang diperlukan untuk melakukan operasi tersebut.

// 在表单中输出 nonce 字段
wp_nonce_field( 'myplugin_action', 'myplugin_nonce' );

// 在处理请求时验证 nonce 和权限
function myplugin_handle_form_submit() {
    if ( ! isset( $_POST['myplugin_nonce'] ) ||
         ! wp_verify_nonce( $_POST['myplugin_nonce'], 'myplugin_action' ) ||
         ! current_user_can( 'manage_options' ) ) {
        wp_die( '安全校验失败。' );
    }
    // ... 安全地处理数据 ...
}

Menyimpulkan.

Pengembangan plugin WordPress merupakan sebuah proses yang sistematis, yang dimulai dengan memahami struktur dasar dan mekanisme hook-nya, kemudian melanjutkan ke tahap implementasi fungsi serta pembuatan antarmuka pengguna. Di akhirnya, praktik keamanan yang ketat harus selalu diterapkan dalam setiap tahap pengembangan. Dengan mengikuti standar pemrograman WordPress dan memanfaatkan sepenuhnya API yang disediakan oleh platform tersebut, para pengembang dapat membuat plugin yang kuat, aman, dan mudah dikelola. Inti dari proses pengembangan ini adalah mengintegrasikan fitur khusus ke dalam siklus hidup (lifecycle) WordPress secara mulus, menggunakan hook-action dan filter, serta mengelola konfigurasi melalui API Settings. Selain itu, verifikasi data, pembersihan data, proses penghindaran karakter berbahaya (escaping), dan pemeriksaan hak akses harus selalu menjadi prioritas utama dalam setiap tahap pengembangan plugin.

FAQ - Pertanyaan yang Sering Diajukan.

Bagaimana cara mendebug (debug) plugin WordPress saya?
Langkah pertama adalah mengaktifkan mode debug di WordPress.wp-config.phpDalam dokumen tersebut, akan...WP_DEBUGKonstanta diatur ketrueIni akan langsung menampilkan kesalahan PHP, peringatan, dan pemberitahuan di halaman web. Untuk debugging yang lebih kompleks, Anda dapat menggunakan alat-alat khusus.error_log()Fungsi tersebut mencatat informasi ke dalam log kesalahan server, atau menggunakan plugin debugging khusus untuk melihat detail informasi seperti hasil query dan mekanisme hooking.

Bagaimana cara plugin saya mendukung berbagai bahasa?

WordPress menggunakan kerangka kerja GNU gettext untuk mendukung fitur internasionalisasi (multilingual support). Langkah pertama yang perlu dilakukan adalah mendefinisikan konfigurasi terkait penggunaan gettext di dalam komentar di bagian awal kode plugin (header of the plugin).Text DomainDalam kode plugin, gunakan metode tertentu untuk mengatur semua string yang perlu diterjemahkan.__()Silakan berikan teks yang ingin diterjemahkan._e()Lakukan terjemahan, lalu gunakan alat seperti Poedit untuk mengekstrak string dari kode sumber plugin dan menghasilkannya..potFile template; kemudian buat file template yang sesuai untuk masing-masing bahasa..poDan yang telah dikompilasi.moFile tersebut kemudian ditempatkan di dalam plugin./languages/Di bawah menu.

Bagaimana cara menghindari konflik nama kelas dalam plugin dengan plugin lain?

Untuk menghindari konflik antara nama kelas, nama fungsi, atau nama konstanta, praktik terbaik adalah dengan menggunakan namespace atau menambahkan prefiks unik pada semua identifikasi. Sejak PHP 5.3, penggunaan namespace sangat disarankan. Misalnya, untuk mendeklarasikan…namespace MyPluginAdmin;Jika mempertimbangkan aspek kompatibilitas, maka penggunaan prefix (penanda awal) adalah wajib, dan prefix tersebut harus cukup unik. Sebagai contoh, bisa digunakan kombinasi singkatan dari nama perusahaan dan nama plugin:function acme_myplugin_init() {}Nama kelas didefinisikan sebagai…class Acme_MyPlugin_Admin_Settings {}

Bagaimana cara menambahkan tabel basis data khusus (custom database table) ke plugin saya?

Mengatur pembuatan tabel khusus saat plugin diaktifkan merupakan waktu yang paling tepat. Anda dapat mengemas kode untuk membuat tabel tersebut ke dalam sebuah fungsi, dan kemudian menggunakan fungsi tersebut sesuai kebutuhan.register_activation_hook()Gunakan fungsi untuk melakukan pendaftaran. Di dalam fungsi tersebut, lakukan proses yang diperlukan.dbDelta()Fungsi ini digunakan untuk membuat atau memperbarui struktur tabel dengan aman, dan memerlukan penggunaan format SQL yang sangat spesifik. Harap pastikan untuk menggunakannya dengan benar.$wpdb->prefixTambahkan prefiks situs ke nama tabel untuk mendukung lingkungan multi-situs.