Mulai dari nol: Panduan lengkap untuk pengembangan plugin WordPress dan tutorial praktis.

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

Preparasi dan pengaturan lingkungan.

Sebelum mengembangkan plugin untuk WordPress, sangat penting untuk membuat lingkungan pengembangan lokal yang stabil. Hal ini akan memungkinkan Anda melakukan pengujian dan debugging tanpa mempengaruhi situs web yang aktif (online).

Pemilihan dan Konfigurasi Lingkungan Pengembangan Lokal

Langkah yang paling penting adalah membangun sebuah server lokal yang mengintegrasikan PHP, MySQL, dan Apache/Nginx. Anda dapat memilih…MAMPXAMPPPaket perangkat lunak integrasi semacam ini menyediakan metode instalasi yang mudah untuk Windows dan macOS. Bagi pengguna yang lebih berpengalaman, mereka dapat menggunakan…DockerMengkontainerisasi lingkungan pengembangan Anda merupakan praktik terbaik saat ini, karena hal tersebut dapat memastikan konsistensi lingkungan dan memudahkan proses penggandaan (replication). Apa pun metode yang Anda pilih, pastikan bahwa versi PHP yang Anda gunakan kompatibel dengan versi utama yang diharapkan oleh plugin tersebut (misalnya PHP 7.4 atau lebih tinggi), serta aktifkan ekstensi PHP yang diperlukan, seperti MySQLi atau PDO.

Menginstal dan mengonfigurasi WordPress.

Setelah lingkungan server lokal siap, Anda perlu menginstal inti (core) WordPress. Unduh versi stabil terbaru dari situs resmi WordPress.org, lalu ekstraknya ke direktori akar (root) web server Anda.htdocswwwFile tersebut berada di dalam sebuah folder di bawah direktori yang ditentukan. Setelah itu, akses folder tersebut melalui browser dan lanjutkan proses pengaturan sesuai dengan langkah-langkah “pemasangan dalam lima menit” yang umum digunakan. Disarankan untuk membuat sebuah database khusus untuk pengembangan plugin, serta mencatat nama database, nama pengguna, dan kata sandi tersebut. Setelah pemasangan selesai, masuk ke panel administrasi WordPress (WordPress backend) dan atur struktur tautan tetap (fixed links) menjadi format yang berbeda dari format default (misalnya, menggunakan nama artikel), hal ini akan membantu menguji kompatibilitas plugin dengan tautan permanen (permanent links).

推荐阅读 Memulai Pengembangan Tema WordPress: Membangun Tema Kustom Pertama Anda dari Nol.

Rekomendasi Alat Pengembangan yang Wajib Dimiliki

Pengembangan yang efisien tidak dapat lepas dari alat-alat yang tepat dan mudah digunakan. Pertama-tama, Anda memerlukan sebuah editor kode, seperti editor yang gratis namun memiliki fitur yang sangat lengkap.Visual Studio CodeInstal plugin yang cocok untuk PHP, WordPress, dan fitur pengenalan kode (code intelligence). Alat pengelolaan versi (version control tool) juga diperlukan.GitAlat ini sangat penting untuk mengelola perubahan kode dan melacak sejarah perkembangan proyek. Alat pengembang browser (Chrome DevTools atau Firefox Developer Edition) sangat penting untuk proses debugging pada sisi front-end. Selain itu, pertimbangkan untuk menginstal alat pemeriksa kualitas kode, seperti…PHP_CodeSnifferpaduanWordPress-Coding-StandardsKumpulan aturan ini dapat membantu Anda mematuhi standar pemrograman resmi WordPress.

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

Struktur Dasar Plugin dan File Inti

Sebuah plugin WordPress standar memiliki struktur direktori dan file yang tertentu. Mengikuti spesifikasi ini merupakan dasar agar plugin dapat dikenali oleh sistem dan dikelola dengan efektif.

Komposisi dasar dari file utama dan fungsinya

Setiap plugin harus memiliki sebuah file PHP utama yang berfungsi sebagai titik masuk (entry point) untuk plugin tersebut. Komentar di awal file ini berisi metadata dari plugin, dan metadata inilah yang penting bagi WordPress untuk mengenali plugin tersebut. Berikut adalah contoh file utama plugin yang paling sederhana:my-first-plugin.phpContoh:

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

// 防止直接文件访问
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

Plugin NameIni adalah satu-satunya bidang yang wajib diisi, dan digunakan untuk menampilkan daftar plugin di latar belakang (di backend). Disarankan untuk mendefinisikannya dengan jelas.ABSPATHPeriksa untuk mencegah pengguna jahat mengakses langsung file inti plugin.

Menambahkan kode inti yang fungsional untuk plugin

Setelah menambahkan komentar di bagian header, Anda dapat mulai menulis kode fungsional untuk plugin tersebut. Contoh paling sederhana adalah menambahkan pesan “Hello World” ke dalam halaman administrasi. Anda dapat menggunakan…add_actionHook akan memasang fungsi kustom pada titik eksekusi tertentu di WordPress.

推荐阅读 Mulai dari nol: Panduan lengkap dan tutorial praktis untuk pengembangan plugin WordPress.

/**
 * 在管理后台顶部显示欢迎信息
 */
function myfp_display_admin_notice() {
    echo '<div class="notice notice-success is-dismissible"><p>Selamat menggunakan “My First Plugin”!</p></div>';
}
add_action( 'admin_notices', 'myfp_display_admin_notice' );

Untuk menjaga keteraturan kode dan menghindari konflik penamaan, semua nama fungsi dan kelas harus menggunakan prefiks yang unik, seperti yang digunakan di sini.myfp_(My First Plugin).

Aturan pengorganisasian direktori plugin dan file sumber daya.

Sebuah plugin dengan fungsi yang sedikit lebih kompleks biasanya terdiri dari beberapa berkas. Struktur direktori yang teratur dapat sangat meningkatkan kemudahan dalam pemeliharaan (maintainability). Cara pengorganisasian yang umum digunakan adalah sebagai berikut:
- /assets/Tempat untuk menyimpan sumber daya statis seperti CSS, JavaScript, gambar, dan font.
- /includes/Berisi file-file kelas PHP inti serta file-fungsi fungsional yang penting.
- /admin/Berisi file-file PHP, CSS, dan JS yang hanya berkaitan dengan backend administrator.
- /public/Berisi file-file yang berkaitan dengan bagian frontend (tampilan) dari sebuah situs web.
- /languages/Tempat untuk menyimpan file terjemahan internasional (.po, .mo).

Selalu ingat bahwa file plugin utama berada di direktori akar (root directory) dari plugin tersebut. Saat mengutip file sumber daya dalam kode, gunakan path yang sesuai dengan lokasi file tersebut di direktori akar plugin.plugin_dir_url( FILE )plugin_dir_path( FILE )Dapatkan URL atau path server yang benar secara dinamis.

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.

Mekanisme Hook dan Interaksi dengan API Inti

Jiwa dari pengembangan plugin WordPress terletak pada mekanisme “Hook”-nya, yang memungkinkan kode Anda untuk dimasukkan dan dijalankan pada saat-saat tertentu dalam proses kerja inti WordPress, tema, atau plugin lainnya.

Memahami Hook Aksi (Action Hook) dan Hook Filter (Filter Hook)

Hook terbagi menjadi dua kategori utama: Action (Aksi) dan Filter (Filter). Hook tipe Action digunakan untuk menjalankan kode Anda ketika suatu peristiwa tertentu terjadi, misalnya setelah artikel diterbitkan atau sebelum halaman tertentu dimuat. Hook ini tidak mengembalikan nilai apa pun, melainkan hanya “melakukan” sesuatu saja. Fungsi inti yang digunakan untuk hal ini adalah…add_action()do_action()Filter hooks digunakan untuk memodifikasi data. Sebelum data digunakan, disimpan, atau ditampilkan, Anda dapat mengintersep dan memodifikasinya. Filter hook harus mengembalikan sebuah nilai. Fungsi inti yang digunakan adalah…add_filter()apply_filters()

Menginstal fitur kustom ke hook standar

WordPress core menyediakan ratusan hook standar. Misalnya, Anda dapat secara otomatis menambahkan pernyataan hak cipta di akhir isi artikel, dan hal ini melibatkan penggunaan both actions (tindakan tertentu dalam WordPress) dan filters (alat pemrosesan data).

推荐阅读 Mengembangkan Plugin WordPress, dari Pemula hingga Ahli: Panduan Langkah demi Langkah untuk Membuat Fitur Kustomisasi.

// 使用过滤器修改文章内容
function myfp_add_copyright_to_content( $content ) {
    if ( is_single() ) {
        $copyright_text = '<p><em>Harap mencantumkan sumber saat mengutip atau membagikan konten ini.</em></p>';
        $content .= $copyright_text;
    }
    return $content;
}
add_filter( 'the_content', 'myfp_add_copyright_to_content' );

// 使用动作在文章保存时执行操作
function myfp_log_post_publish( $post_id ) {
    // 记录日志或执行其他后处理
    error_log( "文章 ID {$post_id} 已发布。" );
}
add_action( 'publish_post', 'myfp_log_post_publish' );

Membuat dan menyediakan hook kustom untuk ekspansi.

Sebuah plugin yang dirancang dengan baik juga seharusnya memungkinkan pengembang lain untuk memperluas fungsinya. Anda dapat melakukannya dengan membuat hook khusus (custom hooks) sendiri. Hal ini tidak hanya mencerminkan keterbukaan arsitektur plugin tersebut, tetapi juga sesuai dengan filosofi WordPress itu sendiri.

// 定义一个自定义动作钩子
function myfp_process_data() {
    $data = '一些初始数据';
    // 其他开发者可以通过 ‘myfp_before_action’ 在此处插入代码
    do_action( 'myfp_before_action', $data );

// 插件的主要处理逻辑...

// 其他开发者可以通过 ‘myfp_after_action’ 在此处插入代码
    do_action( 'myfp_after_action', $data );
}

// 定义一个自定义过滤器钩子
function myfp_get_output() {
    $output = '默认输出';
    // 允许其他开发者过滤最终的输出
    return apply_filters( 'myfp_filter_output', $output );
}

Membuat antarmuka pengelolaan plugin dan opsi pengaturan

Sebagian besar plugin memerlukan antarmuka backend yang memungkinkan pengguna untuk melakukan konfigurasi. WordPress menyediakan berbagai API untuk membantu Anda membuat halaman pengaturan dan opsi yang standar dengan cepat dan aman.

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.

Menggunakan API pengaturan untuk mengelola opsi keamanan

API untuk pengaturan WordPress merupakan kerangka kerja yang aman untuk memproses formulir, memverifikasi, menyimpan, dan menampilkan data opsi pengguna. API ini secara otomatis menangani field keamanan berupa “nonce” serta melakukan pemeriksaan hak akses. Langkah-langkah dasar untuk membuat halaman pengaturan meliputi: 1) Mendaftarkan pengaturan baru, 2) Menambahkan blok pengaturan, 3) Menambahkan field-field yang diperlukan. Kode berikut menunjukkan cara untuk mendaftarkan pengaturan yang sederhana:

function myfp_register_settings() {
    register_setting(
        'myfp_settings_group', // 选项组名
        'myfp_option_name',    // 选项名(存储在wp_options表中)
        array( 'sanitize_callback' => 'myfp_sanitize_callback' ) // 消毒回调函数
    );

add_settings_section(
        'myfp_settings_section', // 区块ID
        '基本设置',               // 区块标题
        'myfp_section_callback', // 区块回调函数(可输出描述)
        'myfp-settings-page'     // 设置页面Slug
    );

add_settings_field(
        'myfp_text_field',      // 字段ID
        '示例文本输入',         // 字段标签
        'myfp_text_field_callback', // 字段回调函数(输出HTML表单域)
        'myfp-settings-page',   // 页面Slug
        'myfp_settings_section' // 所属区块ID
    );
}
add_action( 'admin_init', 'myfp_register_settings' );

Membangun halaman menu dan sub-menu di berbagai lokasi

Anda perlu menambahkan tautan ke halaman pengaturan ke menu administrasi WordPress. Gunakan fitur yang tersedia untuk melakukan hal tersebut.add_menu_page()Dapat membuat menu utama (top-level menu), dan menggunakannya.add_submenu_page()Submenu dapat dibuat.

function myfp_add_admin_menu() {
    // 添加顶级菜单
    add_menu_page(
        '我的插件设置',        // 页面标题
        '我的插件',            // 菜单标题
        'manage_options',     // 权限能力
        'myfp-settings-page', // 菜单Slug
        'myfp_render_settings_page', // 渲染页面的回调函数
        'dashicons-admin-generic', // 图标(可选)
        80                    // 菜单位置
    );

// 添加子菜单(指向同一个页面,但菜单标题不同)
    add_submenu_page(
        'myfp-settings-page', // 父菜单Slug
        '关于此插件',         // 页面标题
        '关于',              // 菜单标题
        'manage_options',    // 权限能力
        'myfp-about-page',   // 菜单Slug
        'myfp_render_about_page' // 渲染回调
    );
}
add_action( 'admin_menu', 'myfp_add_admin_menu' );

Callback function for rendering the custom settings page

myfp_render_settings_pageFungsi panggil balik (callback function) bertanggung jawab untuk menghasilkan struktur HTML halaman pengaturan. Dalam fungsi ini, Anda perlu memanggil…settings_fields()do_settings_sections()Output the fields registered by the Settings API.

function myfp_render_settings_page() {
    // 检查用户权限
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }
    ?&gt;
    <div class="wrap">
        <h1>\n</h1>
        <form action="/id/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            settings_fields( 'myfp_settings_group' );
            do_settings_sections( 'myfp-settings-page' );
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="id"/></form>
    </div>
    \n&lt;?php
}

Menyimpulkan.

Pengembangan plugin WordPress merupakan proses mengubah ide kreatif menjadi fitur yang nyata, dan keberhasilannya bergantung pada pemahaman yang jelas tentang struktur dasar, penerapan mekanisme “hook” yang mahir, serta perhatian terus-menerus terhadap aspek keamanan dan pengalaman pengguna. Mulai dari membangun lingkungan pengembangan, menulis file utama, hingga mengintegrasikan plugin dengan WordPress secara mendalam menggunakan fungsi “action” dan “filter”, lalu membuat antarmuka manajemen yang profesional melalui pengaturan API, setiap langkah dilakukan sesuai dengan standar dan praktik terbaik yang telah ditetapkan. Kuncinya adalah menjaga kode agar tetap termodulasi, mudah dibaca, dan dapat diperluas; menggunakan prefiks unik untuk menghindari konflik, serta selalu mengutamakan aspek keamanan. Dengan mempelajari dan mempraktikkan panduan ini, Anda kini telah memiliki kemampuan untuk membuat plugin WordPress yang lengkap dan memenuhi standar pengembangan.

FAQ - Pertanyaan yang Sering Diajukan.

Apa dasar pemrograman yang diperlukan untuk mengembangkan plugin WordPress ###?
Untuk mengembangkan plugin WordPress, diperlukan pengetahuan dasar tentang bahasa pemrograman PHP, termasuk sintaks, fungsi, array, dan konsep pemrograman berorientasi objek. Pemahaman dasar tentang teknologi front-end seperti HTML, CSS, dan JavaScript juga sangat membantu dalam pengembangan plugin yang memiliki antarmuka pengguna (user interface). Kemampuan dalam melakukan operasi dasar pada basis data MySQL juga sangat penting, karena WordPress sangat bergantung pada basis data tersebut.

Bagaimana cara mendebug plugin WordPress yang sedang dikembangkan?

Ada berbagai cara untuk mendeteksi dan memperbaiki masalah (debugging) pada plugin. Pertama-tama,wp-config.phpBuka file tersebut.WP_DEBUGWP_DEBUG_LOGIni akan mencatat kesalahan dan peringatan PHP ke dalam…/wp-content/debug.logDalam file tersebut, kode tersebut tidak akan ditampilkan kepada pengguna di front end. Selanjutnya, gunakan alat pengembang browser (seperti Chrome DevTools) untuk mendeteksi dan memperbaiki masalah terkait JavaScript serta permintaan jaringan (network requests). Untuk logika yang kompleks, Anda dapat menggunakan…var_dump()error_log()Fungsi tersebut mengeluarkan nilai variabel ke dalam log atau halaman web. Selain itu, dengan menginstal alat debug PHP yang profesional seperti Xdebug dan mengintegrasikannya dengan editor kode Anda, Anda dapat melakukan debug menggunakan titik henti (breakpoint), yang merupakan metode debug yang paling efisien.

Bagaimana cara mengimplementasikan internasionalisasi berbahasa ganda untuk plugin saya?

Menerapkan internasionalisasi (i18n) terutama menggunakan fitur yang disediakan oleh WordPress.__()_e()_x()Fungsi-fungsi penerjemahan tersebut digunakan untuk menerjemahkan teks. Dalam kode plugin, semua string yang perlu diterjemahkan harus dibungkus menggunakan fungsi-fungsi ini, dan domain teks (Text Domain) yang sesuai harus ditentukan. Domain teks tersebut didefinisikan dalam komentar di awal kode plugin.Text DomainNilai tersebut kemudian digunakan untuk memindai kode sumber plugin dengan alat seperti Poedit, sehingga dapat dihasilkan….potFile template; penerjemah menggunakan file ini untuk membuat versi teks dalam berbagai bahasa..poDan yang telah dikompilasi.moFile. Akhirnya, letakkan file-file terjemahan tersebut di dalam plugin./languages/Berada di dalam direktori tersebut, dan digunakan saat plugin diinisialisasi.load_plugin_textdomain()Fungsi tersebut yang bertugas untuk memuat (mengunduh dan menginstal) komponen-komponen tersebut.

Bagaimana cara mempublikasikan plugin saya secara gratis ke dalam direktori plugin resmi WordPress?

Untuk mempublikasikan plugin ke direktori resmi WordPress, Anda perlu memenuhi sejumlah persyaratan. Pertama-tama, pastikan bahwa plugin Anda sepenuhnya mematuhi lisensi GPL v2 atau versi yang lebih baru. Kedua, pastikan kualitas dan keamanan kode, serta ikuti standar pengkodean WordPress. Selanjutnya, buatlah akun di WordPress.org dan kirimkan plugin Anda ke bagian “Pengembang” (Developers). Sebelum mengirimkan, pastikan bahwa plugin tersebut memiliki dokumentasi yang lengkap dan disusun dengan baik.readme.txtFile tersebut menggunakan format Markdown khusus, dan pengaturan internasionalisasinya telah dilakukan dengan benar. Setelah file tersebut dikirimkan, tim pemeriksa plugin akan melakukan peninjauan, proses ini bisa memakan waktu beberapa hari hingga beberapa minggu. Setelah lulus peninjauan, plugin Anda akan dapat ditemukan dan diinstal di direktori resmi.