{"id":11218,"date":"2020-12-30T00:00:00","date_gmt":"2020-12-30T00:00:00","guid":{"rendered":"https:\/\/binus.ac.id\/binus-digital\/2020\/12\/30\/menulis-hooks-pada-wordpress-functional-vs-class\/"},"modified":"2024-09-24T02:20:15","modified_gmt":"2024-09-24T02:20:15","slug":"menulis-hooks-pada-wordpress-functional-vs-class","status":"publish","type":"post","link":"https:\/\/binus.ac.id\/binus-digital\/2020\/12\/30\/menulis-hooks-pada-wordpress-functional-vs-class\/","title":{"rendered":"Menulis Hooks pada WordPress (Functional vs Class)"},"content":{"rendered":"<p>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.<\/p>\n<p>Sebagai contoh, jika kita ingin menambahkan sebuah kode Google Analytic di dalam tag &lt;head&gt;, kita bisa menggunakan hook \u201cwp_head\u201d seperti berikut.<\/p>\n<pre class=\"wp-block-preformatted\">add_action('wp_head', function() {\r\n   ?&gt;\r\n   &lt;!-- Google Analytic Code Here--&gt;\r\n   &lt;script&gt;...&lt;\/script&gt;\r\n   &lt;?php\r\n});<\/pre>\n<p>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.<\/p>\n<p><strong>01. Function<\/strong><br \/>\nSeperti 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.<\/p>\n<p>Sebagai contoh, jika kita mempunyai theme dengan nama misalnya \u201cbinus-2021\u201d, maka kita dapat menambahkan nama theme kita sebagai prefix dari nama fungsi yang akan dibuat. Misalnya:<\/p>\n<pre class=\"wp-block-preformatted\">function binus_2021_add_google_analytic() {\r\n   ?&gt;\r\n\u00a0 \u00a0&lt;!-- GOOGLE ANALYTIC CODE --&gt;\r\n\u00a0 \u00a0&lt;script&gt;...&lt;\/script&gt;\r\n\u00a0 \u00a0&lt;?php\r\n}\r\nadd_action('wp_head', 'binus_2021_add_google_analytic');<\/pre>\n<p>Pada penulisan fungsi di theme WordPress, sebaiknya hindari penulisan fungsi yang general atau umum seperti:<\/p>\n<pre class=\"wp-block-preformatted\">\/\/ Yang sebaiknya dihindari\r\nadd_google_analytic() {}\r\nrender_homepage() {}\r\n\r\n\/\/ Yang sebaiknya dilakukan\r\nnama_theme_add_google_analytic() {}\r\nnama_theme_render_homepage() {}<\/pre>\n<p><strong>02. Class<\/strong><br \/>\nDengan 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:<\/p>\n<pre class=\"wp-block-preformatted\">class BINUS2021 {\r\n\u00a0 \u00a0\/\/ fungsi untuk inisialisasi\r\n\u00a0 \u00a0function init() {\r\n\u00a0 \u00a0 \u00a0 add_action('wp_head', array($this, 'add_google_analytic'));\r\n\u00a0 \u00a0}\r\n\r\n\u00a0 \u00a0function add_google_analytic() {\r\n\u00a0 \u00a0 \u00a0 ?&gt;\r\n\u00a0 \u00a0 \u00a0 &lt;!-- GOOGLE ANALYTIC CODE --&gt;\r\n\u00a0 \u00a0 \u00a0 &lt;script&gt;...&lt;\/script&gt;\r\n\u00a0 \u00a0&lt;?php\r\n\u00a0 \u00a0}\r\n}\r\n$engine = new BINUS2021();\r\n$engine-&gt;init();<\/pre>\n<p>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.<\/p>\n<p>Dengan begitu, kode jadi lebih rapi, modular dan penamaan fungsi yang tidak panjang dan rumit.<\/p>\n<pre class=\"wp-block-preformatted\">class HomePage {\r\n\u00a0 \u00a0function init() {}\r\n\u00a0 \u00a0function add_google_analytic() {}\r\n}\r\n\r\nclass SinglePage {\r\n\u00a0 \u00a0function init() {}\r\n\u00a0 \u00a0function add_google_analytic() {}\r\n}\r\n\r\nclass ContactPage {\r\n\u00a0 \u00a0function init() {}\r\n\u00a0 \u00a0function add_google_analytic() {}\r\n}<\/pre>\n<p>Sekian artikel kali ini, semoga bermanfaat.<\/p>\n<p>Hooks:\u00a0<a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/\">https:\/\/developer.wordpress.org\/reference\/hooks\/<\/a><br \/>\nPhoto by\u00a0<a href=\"https:\/\/unsplash.com\/@goshua13?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Joshua Aragon<\/a>\u00a0on\u00a0<a href=\"https:\/\/unsplash.com\/s\/photos\/javascript?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Unsplash<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 &lt;head&gt;, kita bisa menggunakan hook \u201cwp_head\u201d seperti berikut. add_action(&#8216;wp_head&#8217;, function() { ?&gt; &lt;!&#8211; [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":11219,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77],"tags":[],"class_list":["post-11218","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles"],"_links":{"self":[{"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/posts\/11218","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/comments?post=11218"}],"version-history":[{"count":1,"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/posts\/11218\/revisions"}],"predecessor-version":[{"id":11799,"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/posts\/11218\/revisions\/11799"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/media\/11219"}],"wp:attachment":[{"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/media?parent=11218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/categories?post=11218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/binus.ac.id\/binus-digital\/wp-json\/wp\/v2\/tags?post=11218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}