Membuat Plugin WordPress

Hook

Hook adalah salah satu fitur inti dari WordPress. Hook sendiri memungkinkan para developer untuk mengembangkan WordPress sesuai kebutuhannya tanpa harus mengubah core WordPress itu sendiri. Dengan tanpa mengubah core inilah, maka pengguna engine WordPress akan selalu dapat menikmati update versi terbaru tanpa khawatir penyesuaian kebutuhan yang dilakukannya akan hilang.

Hook dalam WordPress dibagi menjadi dua, action hook dan filter hook. Action hook adalah hook yang memungkinkan eksekusi fungsi buatan anda pada suatu posisi (sebelum atau sesudah suatu fungsi wordpress dijalankan). Filter hook adalah hook yang memungkinkan anda untuk melakukan modifikasi output sebuah fungsi tanpa melakukan perubahan pada fungsi tersebut.

Action Hook

Action hook adalah hook yang memungkinkan eksekusi fungsi buatan anda pada suatu posisi (sebelum atau sesudah suatu fungsi wordpress dijalankan). Contoh posisi yang dimaksud misalnya, anda menginginkan fungsi anda untuk dieksekusi sebelum atau sesudah sebuah tulisan di simpan.

1. Menambahkan Action hook

untuk menambahkan action hook, gunakan fungsi add_hook():

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

dimana:
– $tag = nama dari action hook yang akan ditambahkan
– $function = nama fungsi yang akan dieksekusi
– $priority = prioritas posisi, makin kecil makin cepat dieksekusi dibanding hook yang lain
– $accepted_args = argumen fungsi jika fungsi sasaran membutuhkan argumen

Action hook dalam WordPress tidak dibatasi hanya untuk satu action saja. Plugin yang anda kembangkan dapat menambahkan serangkaian action pada suatu action hook. Action hook sendiri tidak membatasi hanya dari plugin anda yang dieksekusi, tapi juga dari plugin lain atau bahkan core dari WordPress sendiri.

Contoh penggunaan fungsi add_action() ini dapat anda temui pada halaman sebelumnya.

add_action( 'wp_footer', 'footercopyright_add_message', 100);
function footercopyright_add_message(){
    echo "Situs ini dibuat dengan <a href="http://wordpress.org">WordPress</a>. Copyright &copy 2012 by Nama anda";
}
2. Mengeksekusi action hook

Setiap fungsi yang menjadi sasaran sebuah action hook, tidak dipanggil/dieksekusi secara langsung semisal dengan menuliskan nama fungsinya (contoh: simpan_dan_backup_post() ) tapi harus dipanggil/dieksekusi lewat interface hook yang disediakan WordPress, yaitu: do_action();

Pola penggunaan fungsi do_action() adalah:

do_action( $tag, $arg = '' ); 

dimana:
– $tag = nama dari action hook itu sendiri,
– $arg = argumen fungsi yang akan dimasukkan pada fungsi sasaran

Pola tersebut juga dapat diperluas jika argumen fungsi yang dibutuhkan lebih dari satu argumen, sehingga polanya menjadi:

do_action( $tag, $arg_1, $arg_2, $arg_3); 

Contoh penggunaan fungsi do_action() dapat anda temui pada core WordPress, seperti pemanggilan fungsi wp_head() yang akan menampilkan tag khusus head WordPress.

do_action( 'wp_head' );

atau untuk pola lebih dari satu argumen fungsi adalah action save_post(), dimana argumen yang disampaikan adalah ID post dan array Post (tulisan), tertulis:

do_action( 'save_post', $post_ID, $post ); 

Cara Kerjanya dari fungsi do_action sebenarnya cukup sederhana. Ketika fungsi ini dieksekusi, $tag sebagai nama dari action hook tersebut akan dicari referensi action hook apa saja yang terdapat dalam array data action hook WordPress, kemudian dipetakan menurut prioritasnya. WordPress kemudian mengeksekusi fungsi-fungsi yang telah terpetakan untuk action hook tersebut.

Jika argumen yang akan disampaikan berupa array, eksekusi action tidak dilakukan dengan do_action() tapi dengan fungsi do_action_ref_array().

Polanya adalah sebagai berikut:

do_action_ref_array( $tag, $args );

Contoh penggunaannya dapat anda temui pada action hook pre_get_posts() berikut:


Fungsi do_action_ref_array() biasanya digunakan pada plugin-plugin atau core WordPress yang ditulis dalam kerangka OOP (Object-oriented Programming).

Pada tutorial selanjutnya, kita akan mempelajari bagaimana cara menghapus sebuah action hook baik itu satu hook, maupun semua hook yang ditujukan pada suatu fungsi, termasuk mengecek apakah sebuah action hook itu ada dan apakah sebuah hook itu telah dilakukan.

7 Comments


  1. Terima kasih, jadi semakin jelas tentang pemrograman plugin wordpress. Ikutan belajar dan download ya mas ???

    Reply

    1. oke, semoga bisa berlanjut tutorialnya.

      Reply

  2. untuk membedakan tampilan front dan halaman adminnya bagiamana? dan jika ingin membuat suatau tampilan akhirnya yang dapat di print(bentuk pdf) misalkan isi” form kemudian akhirnya bisa di print bagiamana? terima kasih

    Reply

    1. saya jawab dengan kebiasaan saya mengembangkan plugin ya mas “John”.

      1. untuk front page, biasanya saya pake metode shortcode. Namun, controller nya tetap sama (baik di admin maupun front), biar irit baris.

      2. untuk print pdf, kita harus menambahkan query permalink khusus, sehingga misal pada halaman situs.com/form-pendaftaran kita tambahkan tanda ?aksi=print_form (silakan googling sendiri “custom query var in WordPress”)

      begitulah nak,

      Reply

    1. ya, pada prinsipnya sama dg framework lain, sama-sama ada celahnya. tinggal siapa yang nemuin duluan, kita apa mereka.

      Reply

Leave a Reply