Tentang Actions

Bagian ini sebenarnya memang sangat mudah untuk dipahami, tapi juga sangat sulit untuk dijelaskan. Berikut adalah beberapa definisi bagus tentang action hook: Definisi pertama dijelaskan bahwa action hook adalah sebuah poin atau tanda yang kita letakkan pada sembarang proses dan nantinya akan mengeksekusi semua kode komputer yang kita kaitkan padanya. Pada definisi yang kedua dijelaskan […]

Bagian ini sebenarnya memang sangat mudah untuk dipahami, tapi juga sangat sulit untuk dijelaskan. Berikut adalah beberapa definisi bagus tentang action hook:

Definisi pertama dijelaskan bahwa action hook adalah sebuah poin atau tanda yang kita letakkan pada sembarang proses dan nantinya akan mengeksekusi semua kode komputer yang kita kaitkan padanya. Pada definisi yang kedua dijelaskan bahwa dengan cara action hook inilah WordPress mengikutsertakan developer-developer-nya untuk ikut menyisipkan kode-kode buatan mereka untuk diikutkan pada banyak “placeholder” yang telah disediakan oleh core WordPress.

Action hook function reference

  • has_action()
  • add_action()
  • do_action()
  • do_action_ref_array()
  • did_action()
  • remove_action()
  • remove_all_actions()

Ada 7 function reference action hook yang saya dapat dalam dokumentasi plugin API. Tapi yang akan sering kita temukan pada plugin atau theme sekarang adalah function do_action() dan add_action(). Fungsi do_action akan mengeksekusi semua hook action yang telah kita tambahkan dengan fungsi add_action. Kedua fungsi saling melengkapi, yang satu mengeksekusi proses yang diikutsertakan dan yang lain menambahkan proses untuk diikutsertakan. Contohnya kita meletakkan sebuah poin action dengan tag ‘before_checkout_product’. Misalkan kita menginginkan agar sebelum proses checkout produk dieksekusi, mungkin ada developer lain yang ingin mengikutsertakan proses lain (hook) disini. Maka skenario kode yang akan kita buat akan tampak seperti ini:

$cart=[“product_id1″=>1,”product_id2″=>2];

$customer=[“name”=>”Mustofa”,”email”=>”…”, …];

do_action(“before_checkout_product”,$cart,$customer);

checkout();

Untuk lebih memahami do_action diatas saya sarankanu untuk membaca dokumentasinya di sini. Pada parameter pertama adalah nama tag action yang ingin Anda eksekusi, sedangkan parameter selanjutnya, kedua, ketiga dan seterusnya adalah arguments yang bisa Anda lewatkan pada fungsi hook yang developer lain dapat mengakses. Cukup simple bukan, dengan cara seperti inilah WordPress bekerja. Ada banyak poin-poin action hook yang dibuat oleh core WordPress, Anda dapat menemukan semuanya pada codex atau pada website Adam R Brown di sini.

Sekarang untuk mengkaitkan kode yang kita buat pada action hook ‘before_checkout_product’, kita dapat melakukannya dengan menggunakan fungsi add_action().

Kita dapat meletakkan action hook diatas pada sembarang tempat pada function.php atau pada plugin wordpress kita. Kalau Anda membaca dokumentasi tentang fungsi ini, maka

 

add_action(‘before_checkout_product’,function($cart,$customer){

notify_admin($cart,$customer[‘email’]);

},10,2);

Anda akan mendapati bahwa ada 4 arguments yang diterima fungsi ini yaitu tag, fungsi callback, prioritas, dan jumlah arguments yang diterima fungsi callback.

add_action( $tag, $function_to_add, $priority, $accepted_args );

Argument prioritas(ketiga) secara default bernilai 10, ini artinya hook yang kita buat akan dieksekusi setelah fungsi hook bernilai 1,2,3,…,9 selesai dieksekusi. Sedangkan argument keempat secara default bernilai 1, ini artinya ada 1 arguments yang harus diikutkan oleh fungsi callback.  Pada tag ‘before_checkout_product’ ada 2 variabel yang diikutkan($cart dan $customer), maka pada argument keempat ini, harus kita isi dengan nilai 2.