Block Patterns dan Options API WordPress
Definisi
Block Patterns adalah kumpulan blok yang sudah disusun dan bisa disisipkan sekaligus lewat inserter (seperti template mini). Options API adalah mekanisme penyimpanan key-value sederhana di tabel options untuk pengaturan site (single value, bukan koleksi post). get_option / update_option adalah pintu utamanya.
Kapan dipakai
- Block Pattern: saat kamu ingin menyediakan layout siap pakai (hero, pricing, CTA) untuk editor non-teknis.
- Options API: menyimpan konfigurasi plugin/theme (API key, toggle fitur, pengaturan global) yang hanya butuh satu nilai per key.
- Hindari Options API untuk data berrelasi banyak; pakai Custom Post Type atau tabel khusus.
Cara kerja
Daftarkan block pattern
register_block_pattern(
'mytheme/hero',
[
'title' => 'Hero Sederhana',
'description' => 'Judul besar + tombol.',
'content' =>
'<!-- wp:heading --><h2>Halo</h2><!-- /wp:heading --><!-- wp:buttons --><!-- wp:button --><div class="wp-block-button"><a class="wp-block-button__link">Mulai</a></div><!-- /wp:button --><!-- /wp:buttons -->',
]
);Baca/tulis option
$api_key = get_option('myplugin_api_key', ''); // default ''
if ($api_key === '') {
update_option('myplugin_api_key', 'default-value');
}Autoload vs tidak
// autoload=yes ikut dimuat di tiap request (kecil & sering dipakai)
update_option('site_tagline', 'Belajar', '', 'yes');
// autoload=no hanya diambil saat get_option dipanggil
update_option('rare_setting', 1, '', 'no');Struktur alur Options API
Loading diagram...
Contoh settings field simpan ke option
register_setting('mygroup', 'myplugin_api_key');
add_settings_field('api_key', 'API Key', function () {
$v = get_option('myplugin_api_key');
echo '<input name="myplugin_api_key" value="' . esc_attr($v) . '">';
}, 'mygroup');Catatan implementasi
update_optionmemanggil filtersanitize_option_*dan hookupdated_option; leverage untuk validasi.- Opsi yang besar/autoload yes menambah beban memory tiap request; batasi.
- Block pattern
contentharus valid HTML blok; salah satu tag tutup bikin pattern rusak. - Gunakan
delete_optionuntuk bersihkan, bukan set kosong.
Kesalahan umum
- Menyimpan object/array besar di option autoload: membebani tiap halaman.
- Lupa
esc_attr/esc_htmlsaat render nilai option: XSS. - Pattern content tidak valid: gagal di-parse, tidak muncul di inserter.
update_optiondi loop: menulis DB berulang; kumpulkan lalu sekali tulis.