Sistem Hook & Filter Framework (API Referensi)
Xionic menyediakan arsitektur ekstensibilitas berbasis Action Hooks dan Filter Hooks agar Child Theme atau plugin dapat memodifikasi struktur halaman tanpa perlu mengedit file template inti.
Urutan Eksekusi Action Hooks
Diagram berikut menunjukkan urutan pemanggilan Action Hook dari atas hingga bawah saat merender sebuah halaman:
MERMAID
flowchart TD
wp_head["wp_head"]
wp_head --> h1["xionic_output_custom_options_css (priority 99)"]
wp_head --> h2["xionic_fix_adminbar_layout (priority 999)"]
h2 --> header_area["header.php"]
header_area --> ha1["do_action('xionic_before_header');"]
ha1 --> ha2["do_action('xionic_header'); -> Hooks::render_header()"]
ha2 --> ha3["do_action('xionic_after_header'); -> xionic_render_hero()"]
ha3 --> content_area["Konten Halaman / Post"]
content_area --> ca1["do_action('xionic_before_content');"]
ca1 --> ca2["[The Loop / Main Content Grid]"]
ca2 --> ca3["do_action('xionic_after_content');"]
ca3 --> footer_area["footer.php"]
footer_area --> fa1["do_action('xionic_before_footer');"]
fa1 --> fa2["do_action('xionic_footer'); -> Hooks::render_footer()"]
fa2 --> fa3["do_action('xionic_after_footer');"]
fa3 --> wp_footer["wp_footer"]
wp_footer --> wf1["xionic_footer hook & Scroll-to-Top Button (priority 90)"]
API Filter Hooks Populer
Filter hooks memungkinkan pengembang memodifikasi daftar pilihan opsi, array konfigurasi, atau parameter template:
| Filter Hook | Parameter | Kegunaan |
|---|---|---|
xionicheaderlayouts |
array $layouts |
Mendaftarkan whitelist slug layout header baru untuk child theme. |
xionicheaderlayoutoptions |
array $options |
Menambahkan opsi pilihan header ke dropdown di Options Panel. |
xionicfooterlayouts |
array $layouts |
Mendaftarkan whitelist slug layout footer baru untuk child theme. |
xionicfooterlayoutoptions |
array $options |
Menambahkan opsi pilihan footer ke dropdown di Options Panel. |
xionicarticlelayouts |
array $layouts |
Mendaftarkan variasi layout single post baru. |
xionicextrapanelsections |
array $sections |
Menyuntikkan section/tab baru ke dalam Options Panel MadOptions. |
xionicextrapanelfields |
array $fields |
Menyuntikkan field pengaturan baru ke tab options yang sudah ada. |
xioniclocatetemplateparts |
array $templates, $slug, $name |
Mengubah daftar file template sebelum fungsi locatetemplate() dipanggil. |
xionictemplateargs |
array $args, $slug, $name |
Memodifikasi array $args yang dioper ke template part. |
madoptionsfontoptions |
array $fonts |
Menambah atau mengubah daftar Google Fonts di field Typography panel. |
Contoh Penggunaan Filter
Menambahkan Opsi Header Baru
PHP
// 1. Tambahkan label ke dropdown panel admin
add_filter('xionic_header_layout_options', function($options) {
$options['header-corporate'] = __('Corporate Navy Header', 'textdomain');
return $options;
});
// 2. Tambahkan slug ke whitelist rendering framework
add_filter('xionic_header_layouts', function($layouts) {
$layouts[] = 'header-corporate';
return $layouts;
});
(Selanjutnya buat file template pendukung di templates/header/header-corporate.php).