wp-plugin-development

Alur kerja pengembangan plugin WordPress yang lengkap mulai dari arsitektur hingga keamanan dan pengemasan rilis. Mencakup struktur plugin, hooks/actions/filters, siklus hidup aktivasi/deaktivasi/uninstall, dan Settings API untuk antarmuka admin serta manajemen opsi. Termasuk dasar keamanan wajib: validasi/sanitasi input, nonces, pemeriksaan kapabilitas, dan kueri SQL terparameterisasi melalui $wpdb->prepare(). Mendukung pola penyimpanan data, pengaturan tugas cron dengan idempotensi, dan migrasi skema dengan...

npx skills add https://github.com/wordpress/agent-skills --skill wp-plugin-development

WP Plugin Development

When to use

Use this skill for plugin work such as:

  • creating or refactoring plugin structure (bootstrap, includes, namespaces/classes)
  • adding hooks/actions/filters
  • activation/deactivation/uninstall behavior and migrations
  • adding settings pages / options / admin UI (Settings API)
  • security fixes (nonces, capabilities, sanitization/escaping, SQL safety)
  • packaging a release (build artifacts, readme, assets)

Inputs required

  • Repo root + target plugin(s) (path to plugin main file if known).
  • Where this plugin runs: single site vs multisite; WP.com conventions if applicable.
  • Target WordPress + PHP versions (affects available APIs and placeholder support in $wpdb->prepare()).

Procedure

0) Triage and locate plugin entrypoints

  1. Run triage:
    • node skills/wp-project-triage/scripts/detect_wp_project.mjs
  2. Detect plugin headers (deterministic scan):
    • node skills/wp-plugin-development/scripts/detect_plugins.mjs

If this is a full site repo, pick the specific plugin under wp-content/plugins/ or mu-plugins/ before changing code.

1) Follow a predictable architecture

Guidelines:

  • Keep a single bootstrap (main plugin file with header).
  • Avoid heavy side effects at file load time; load on hooks.
  • Prefer a dedicated loader/class to register hooks.
  • Keep admin-only code behind is_admin() (or admin hooks) to reduce frontend overhead.

See:

  • references/structure.md

2) Hooks and lifecycle (activation/deactivation/uninstall)

Activation hooks are fragile; follow guardrails:

  • register activation/deactivation hooks at top-level, not inside other hooks
  • flush rewrite rules only when needed and only after registering CPTs/rules
  • uninstall should be explicit and safe (uninstall.php or register_uninstall_hook)

See:

  • references/lifecycle.md

3) Settings and admin UI (Settings API)

Prefer Settings API for options:

  • register_setting(), add_settings_section(), add_settings_field()
  • sanitize via sanitize_callback

See:

  • references/settings-api.md

4) Security baseline (always)

Before shipping:

  • Validate/sanitize input early; escape output late.
  • Use nonces to prevent CSRF and capability checks for authorization.
  • Avoid directly trusting $_POST / $_GET; use wp_unslash() and specific keys.
  • Use $wpdb->prepare() for SQL; avoid building SQL with string concatenation.

See:

  • references/security.md

5) Data storage, cron, migrations (if needed)

  • Prefer options for small config; custom tables only if necessary.
  • For cron tasks, ensure idempotency and provide manual run paths (WP-CLI or admin).
  • For schema changes, write upgrade routines and store schema version.

See:

  • references/data-and-cron.md

Verification

  • Plugin activates with no fatals/notices.
  • Settings save and read correctly (capability + nonce enforced).
  • Uninstall removes intended data (and nothing else).
  • Run repo lint/tests (PHPUnit/PHPCS if present) and any JS build steps if the plugin ships assets.

Failure modes / debugging

  • Activation hook not firing:
    • hook registered incorrectly (not in main file scope), wrong main file path, or plugin is network-activated
  • Settings not saving:
    • settings not registered, wrong option group, missing capability, nonce failure
  • Security regressions:
    • nonce present but missing capability checks; or sanitized input not escaped on output

See:

  • references/debugging.md

Escalation

For canonical detail, consult the Plugin Handbook and security guidelines before inventing patterns.

Lebih banyak skill dari wordpress

blueprint
wordpress
Gunakan saat membuat, mengedit, atau meninjau file JSON blueprint WordPress Playground. Dipicu oleh penyebutan blueprint, konfigurasi playground, atau permintaan…
official
wordpress-router
wordpress
Mengklasifikasikan basis kode WordPress dan merutekan ke alur kerja yang benar untuk plugin, tema, blok, dan pemeriksaan inti. Menjalankan triase proyek otomatis untuk mengidentifikasi jenis repositori (plugin, tema, tema blok, blok Gutenberg, inti WP) dan perkakas yang tersedia. Menghasilkan hasil klasifikasi dan perutean pohon keputusan ke keterampilan khusus domain berdasarkan niat pengguna dan jenis proyek. Membutuhkan akses root repositori dan operasi sistem file bash/Node; beberapa alur kerja memerlukan WP-CLI. Menargetkan WordPress 6.9+ dengan PHP 7.2.24+;...
official
wp-abilities-api
wordpress
Pendaftaran API Kemampuan WordPress, eksposur REST, dan konsumsi sisi klien untuk WordPress 6.9+. Daftarkan kemampuan dan kategori dalam PHP menggunakan wp_register_ability() dan wp_register_ability_category() dengan ID stabil, label, dan metadata. Ekspos kemampuan ke klien melalui titik akhir REST /wp-json/wp-abilities/v1/ dengan mengatur meta.show_in_rest: true. Konsumsi kemampuan dalam JavaScript menggunakan paket @wordpress/abilities untuk akses sisi klien dan pemeriksaan izin. Membutuhkan WordPress 6.9+...
official
wp-abilities-audit
wordpress
Audit permukaan REST plugin WordPress dan hasilkan dokumen audit terstandarisasi yang mengusulkan pendaftaran Abilities API. Menghasilkan dokumen markdown dengan YAML…
official
wp-abilities-verify
wordpress
Verifikasi registrasi Abilities API plugin WordPress: enumerasi kemampuan, periksa bahwa perilaku callback sesuai dengan klaim setiap anotasi (yang adversarial…
official
wp-block-development
wordpress
Pengembangan blok WordPress untuk Gutenberg: metadata, registrasi, rendering, dan alur kerja build. Mencakup pembuatan blok, konfigurasi block.json, rendering statis vs. dinamis, dan registrasi PHP sisi server dengan register_block_type_from_metadata(). Menerapkan apiVersion: 3 untuk kompatibilitas WordPress 6.9+, termasuk dukungan editor iframe dan isolasi gaya. Menangani serialisasi atribut, depresiasi/migrasi untuk mencegah kesalahan "Blok tidak valid", dan komposisi blok dalam. Termasuk...
official
wp-block-themes
wordpress
Pengembangan tema blok WordPress: theme.json, template, pola, dan pemecahan masalah Site Editor. Mencakup pengeditan theme.json (prasetel, pengaturan, gaya per blok), template dan bagian template, pola, serta variasi gaya di seluruh WordPress 6.9+. Termasuk skrip triase untuk mendeteksi akar tema dan struktur tema blok, ditambah prosedur terpandu untuk membuat tema baru atau mengonversi tema klasik. Menyediakan alur kerja debugging untuk masalah hierarki gaya, penggantian kustomisasi pengguna, dan Site...
official
wp-interactivity-api
wordpress
Gunakan saat membangun atau men-debug fitur WordPress Interactivity API (arahan data-wp-*, @wordpress/interactivity store/state/actions, block viewScriptModule…
official