Skip to content

Ikhtisar Chapter 22: Plugin Development (PHP)

Apa yang Dipelajari?

Membangun plugin WordPress dari nol menggunakan PHP — dari struktur file, Settings API, fitur hitung kata, sistem terjemahan, hingga plugin filter kata dengan custom admin menu.

Poin Utama

1. Struktur Plugin

  • Folder di wp-content/plugins/ + file PHP utama dengan comment header wajib (Plugin Name, Description, Text Domain, dll.)
  • Baris keamanan: defined('ABSPATH') or die(...) untuk cegah akses langsung
  • Gunakan PHP class agar nama fungsi tidak bentrok dengan plugin lain

2. Settings API — 3 Fungsi Utama

FungsiKegunaan
register_setting()Daftarkan option ke database + sanitize callback
add_settings_section()Buat grup section di halaman settings
add_settings_field()Tambah field (dropdown/text/checkbox) ke section

Helper WordPress: selected() untuk dropdown, checked() untuk checkbox — otomatis tambahkan atribut HTML yang tepat.

3. Plugin Word Count

  • Filter the_content → hitung kata (str_word_count), karakter (strlen), waktu baca (words / 225)
  • Semua fitur bisa di-toggle via checkbox di settings
  • Posisi tampilan (awal/akhir post) bisa dipilih
  • Validasi custom: sanitize_callback + add_settings_error() untuk nilai tidak valid

4. Translations / Lokalisasi (i18n)

  • __('text', 'domain') untuk return, _e() untuk echo
  • Selalu gunakan esc_html__() untuk output ke halaman (keamanan)
  • load_plugin_text_domain() di hook init
  • Plugin Loco Translate untuk mengelola file .pot / .po / .mo

5. Admin Menu & Sub-Menu

FungsiHasil
add_options_page()Halaman di bawah menu Settings (5 argumen)
add_menu_page()Menu baru di sidebar (7 argumen, termasuk icon + posisi)
add_submenu_page()Sub-menu di bawah menu utama

Icon bisa pakai Dashicons atau custom SVG base64. CSS per halaman bisa dimuat via hook "load-{$mainPageHook}".

6. Plugin Word Filter

  • Form handling manual (tanpa Settings API): wp_nonce_field(), wp_verify_nonce(), current_user_can(), update_option()
  • Logika filter: explode()array_map('trim')str_ireplace() (case-insensitive replace)
  • Sub-menu Options menggunakan Settings API standar

7. Perbedaan Settings API vs Manual

AspekSettings APIManual
Form actionoptions.phpURL halaman sendiri
PenyimpananOtomatisupdate_option()
KeamananOtomatis via settings_fields()Manual nonce + capability check

Satu Kalimat

Plugin WordPress PHP dibangun di atas hooks (add_action, add_filter), Settings API untuk konfigurasi, dan class PHP untuk menghindari konflik — semua dalam satu folder di wp-content/plugins/.