Hook adalah salah satu fitur WordPress yang digunakan untuk membuat sebuah situs WordPress dapat di modifikasi dengan mudah tanpa harus mengubah file pada core atau script WordPress secara langsung.

Sebagai contoh, jika kita ingin menambahkan sebuah kode Google Analytic di dalam tag <head>, kita bisa menggunakan hook “wp_head” seperti berikut.

add_action('wp_head', function() {
   ?>
   <!-- Google Analytic Code Here-->
   <script>...</script>
   <?php
});

Pada artikel kali ini, kita akan bahas penulisan hook menggunakan bentuk Function maupun bentuk Class. Perlu dicatat terlebih dahulu, baik menulis hook dengan bentuk Function atau Class tidak memiliki fungsi yang berbeda, hanya berbeda cara penulisannya saja.

01. Function
Seperti namanya, kita membuat sebuah fungsi untuk menjalankan sebuah hook. Nama fungsi yang dibuat harus nama yang unik agar tidak bentrok dengan fungsi yang dimiliki PHP (by default), fungsi WordPress (by default), serta fungsi-fungsi yang terdapat pada Plugin yang diinstall.

Sebagai contoh, jika kita mempunyai theme dengan nama misalnya “binus-2021”, maka kita dapat menambahkan nama theme kita sebagai prefix dari nama fungsi yang akan dibuat. Misalnya:

function binus_2021_add_google_analytic() {
   ?>
   <!-- GOOGLE ANALYTIC CODE -->
   <script>...</script>
   <?php
}
add_action('wp_head', 'binus_2021_add_google_analytic');

Pada penulisan fungsi di theme WordPress, sebaiknya hindari penulisan fungsi yang general atau umum seperti:

// Yang sebaiknya dihindari
add_google_analytic() {}
render_homepage() {}

// Yang sebaiknya dilakukan
nama_theme_add_google_analytic() {}
nama_theme_render_homepage() {}

02. Class
Dengan class, kita tidak perlu khawatir dengan penulisan nama fungsi yang sama atau duplikat sehingga menyebabkan error karena fungsi-fungsi yang dijalankan sudah dibungkus oleh Class. Nama class nya saja yang harus diberi nama yang unik. Sebagai contoh:

class BINUS2021 {
   // fungsi untuk inisialisasi
   function init() {
      add_action('wp_head', array($this, 'add_google_analytic'));
   }

   function add_google_analytic() {
      ?>
      <!-- GOOGLE ANALYTIC CODE -->
      <script>...</script>
   <?php
   }
}
$engine = new BINUS2021();
$engine->init();

Saat ini saya sendiri lebih banyak menulis hook dengan menggunakan Class karena seringkali perlu menambahkan banyak hook, bahkan ditiap halaman bisa berbeda hook dengan fungsi yang sama, sehingga pengunaan class bisa saya bedakan sesuai nama halamannya.

Dengan begitu, kode jadi lebih rapi, modular dan penamaan fungsi yang tidak panjang dan rumit.

class HomePage {
   function init() {}
   function add_google_analytic() {}
}

class SinglePage {
   function init() {}
   function add_google_analytic() {}
}

class ContactPage {
   function init() {}
   function add_google_analytic() {}
}

Sekian artikel kali ini, semoga bermanfaat.

Hooks: https://developer.wordpress.org/reference/hooks/
Photo by Joshua Aragon on Unsplash