Hook & Filter API

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