{"id":16346,"date":"2026-08-12T23:56:02","date_gmt":"2026-08-12T20:56:02","guid":{"rendered":"https:\/\/www.ihs.com.tr\/blog\/?p=16346"},"modified":"2026-08-12T23:56:02","modified_gmt":"2026-08-12T20:56:02","slug":"wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin","status":"publish","type":"post","link":"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/","title":{"rendered":"WordPress&#8217;te Action ve Filter Hook&#8217;lar\u0131n\u0131 Anlamak: Kendi Fonksiyonlar\u0131n\u0131z\u0131 Yaz\u0131n"},"content":{"rendered":"<p>WordPress, esnek ve geni\u015fletilebilir yap\u0131s\u0131yla milyonlarca web sitesine g\u00fc\u00e7 veren lider i\u00e7erik y\u00f6netim sistemidir. Bu esnekli\u011fin temelinde ise &#8220;Hook&#8221; ad\u0131 verilen g\u00fc\u00e7l\u00fc bir mimari yatar. Hook&#8217;lar, geli\u015ftiricilerin WordPress \u00e7ekirde\u011fine, temalara veya eklentilere do\u011frudan m\u00fcdahale etmeden kendi kodlar\u0131n\u0131 entegre etmelerini sa\u011flayan kancalard\u0131r. Bu mimari sayesinde, bir g\u00fcncelleme s\u0131ras\u0131nda \u00f6zel kodlar\u0131n\u0131z\u0131n kaybolma riski olmadan sitenizi diledi\u011finiz gibi \u00f6zelle\u015ftirebilirsiniz. Bu makalede, WordPress hook mimarisinin temel ta\u015flar\u0131 olan Action ve Filter hook&#8217;lar\u0131n\u0131 derinlemesine inceleyecek, nas\u0131l \u00e7al\u0131\u015ft\u0131klar\u0131n\u0131 pratik \u00f6rneklerle g\u00f6sterecek ve kendi \u00f6zel hook&#8217;lar\u0131n\u0131z\u0131 nas\u0131l olu\u015fturabilece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_77 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0130\u00e7erik Tablosu<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a7d64ee9d51b\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\" id=\"ez-toc-cssicon-toggle-item-6a7d64ee9d51b\" aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#WordPress-Hook-Mimarisine-Giris\" >WordPress Hook Mimarisine Giri\u015f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#WordPressin-Genisletilebilir-Yapisi-Nedir\" >WordPress&#8217;in Geni\u015fletilebilir Yap\u0131s\u0131 Nedir?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Hook-Kavrami-WordPress-Cekirdegine-Guvenli-Mudahale\" >Hook Kavram\u0131: WordPress \u00c7ekirde\u011fine G\u00fcvenli M\u00fcdahale<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Action-ve-Filter-Hooklari-Arasindaki-Temel-Farklar\" >Action ve Filter Hook&#8217;lar\u0131 Aras\u0131ndaki Temel Farklar<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Action-Hooklari-Belirli-Zamanlarda-Gorev-Calistirmak\" >Action Hook&#8217;lar\u0131: Belirli Zamanlarda G\u00f6rev \u00c7al\u0131\u015ft\u0131rmak<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Action-Hook-Nedir\" >Action Hook Nedir?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Action-Hooklarin-Calisma-Mantigi-ve-Tetiklenme-Anlari\" >Action Hook&#8217;lar\u0131n \u00c7al\u0131\u015fma Mant\u0131\u011f\u0131 ve Tetiklenme Anlar\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Temel-Fonksiyonlar-add-action-ve-do-action\" >Temel Fonksiyonlar: `add_action()` ve `do_action()`<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Pratik-Ornek-1-wp-head-ile-Header-Alanina-Analitik-Kodu-Ekleme\" >Pratik \u00d6rnek 1: `wp_head` ile Header Alan\u0131na Analitik Kodu Ekleme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Pratik-Ornek-2-save-post-ile-Yazi-Kaydedildiginde-E-posta-Gonderme\" >Pratik \u00d6rnek 2: `save_post` ile Yaz\u0131 Kaydedildi\u011finde E-posta G\u00f6nderme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#add-action-Parametreleri-Oncelik-Priority-ve-Arguman-Sayisi-Accepted-Args\" >`add_action()` Parametreleri: \u00d6ncelik (Priority) ve Arg\u00fcman Say\u0131s\u0131 (Accepted Args)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Filter-Hooklari-Veriyi-Degistirmek-ve-Filtrelemek\" >Filter Hook&#8217;lar\u0131: Veriyi De\u011fi\u015ftirmek ve Filtrelemek<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Filter-Hook-Nedir\" >Filter Hook Nedir?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Filter-Hooklarin-Calisma-Prensibi-ve-Veri-Akisi\" >Filter Hook&#8217;lar\u0131n \u00c7al\u0131\u015fma Prensibi ve Veri Ak\u0131\u015f\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Temel-Fonksiyonlar-add-filter-ve-apply-filters\" >Temel Fonksiyonlar: `add_filter()` ve `apply_filters()`<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Pratik-Ornek-1-the-title-ile-Yazi-Basliklarina-Ek-Bilgi-Ekleme\" >Pratik \u00d6rnek 1: `the_title` ile Yaz\u0131 Ba\u015fl\u0131klar\u0131na Ek Bilgi Ekleme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Pratik-Ornek-2-excerpt-length-ile-Ozet-Uzunlugunu-Degistirme\" >Pratik \u00d6rnek 2: `excerpt_length` ile \u00d6zet Uzunlu\u011funu De\u011fi\u015ftirme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#add-filter-Parametreleri-ve-return-Ifadesinin-Kritik-Onemi\" >`add_filter()` Parametreleri ve `return` \u0130fadesinin Kritik \u00d6nemi<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Kendi-Hook-Fonksiyonlarinizi-Yazma-ve-Ileri-Seviye-Kullanim\" >Kendi Hook Fonksiyonlar\u0131n\u0131z\u0131 Yazma ve \u0130leri Seviye Kullan\u0131m<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Mevcut-Hooklari-Nasil-Bulabilirsiniz\" >Mevcut Hook&#8217;lar\u0131 Nas\u0131l Bulabilirsiniz?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Kendi-Ozel-Hooklarinizi-Olusturma\" >Kendi \u00d6zel Hook&#8217;lar\u0131n\u0131z\u0131 Olu\u015fturma<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Eklenmis-Hooklari-Kaldirma-remove-action-ve-remove-filter\" >Eklenmi\u015f Hook&#8217;lar\u0131 Kald\u0131rma: `remove_action()` ve `remove_filter()`<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Anonim-Fonksiyonlar-Closures-ile-Hook-Kullanimi\" >Anonim Fonksiyonlar (Closures) ile Hook Kullan\u0131m\u0131<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#En-Iyi-Uygulamalar-ve-Sik-Yapilan-Hatalar\" >En \u0130yi Uygulamalar ve S\u0131k Yap\u0131lan Hatalar<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Dogru-Hook-Turunu-Secmek-Action-mi-Filter-mi\" >Do\u011fru Hook T\u00fcr\u00fcn\u00fc Se\u00e7mek: Action m\u0131, Filter m\u0131?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Fonksiyon-Isimlendirme-ve-Cakismalari-Onleme-Prefixing\" >Fonksiyon \u0130simlendirme ve \u00c7ak\u0131\u015fmalar\u0131 \u00d6nleme (Prefixing)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Kodunuzu-Nereye-Eklemelisiniz-functionsphp-Ozel-Eklenti-veya-Must-Use-Eklentiler\" >Kodunuzu Nereye Eklemelisiniz?: `functions.php`, \u00d6zel Eklenti veya Must-Use Eklentiler<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Hooklarla-Ilgili-Hata-Ayiklama-Ipuclari\" >Hook&#8217;larla \u0130lgili Hata Ay\u0131klama \u0130pu\u00e7lar\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Performans-Uzerindeki-Etkileri-ve-Kod-Optimizasyonu\" >Performans \u00dczerindeki Etkileri ve Kod Optimizasyonu<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#WordPress-Hosting-ve-Gelistirme-Ihtiyaclariniz-Icin-Neden-IHS-Telekomu-Tercih-Etmelisiniz\" >WordPress Hosting ve Geli\u015ftirme \u0130htiya\u00e7lar\u0131n\u0131z \u0130\u00e7in Neden \u0130HS Telekom&#8217;u Tercih Etmelisiniz?<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Gelistirici-Dostu-Altyapi-ve-Araclar-SSH-WP-CLI-Git\" >Geli\u015ftirici Dostu Altyap\u0131 ve Ara\u00e7lar (SSH, WP-CLI, Git)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Yuksek-Performansli-ve-WordPress-icin-Optimize-Edilmis-Sunucular\" >Y\u00fcksek Performansl\u0131 ve WordPress i\u00e7in Optimize Edilmi\u015f Sunucular<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#WordPress-Konusunda-Uzmanlasmis-Teknik-Destek-Ekibi\" >WordPress Konusunda Uzmanla\u015fm\u0131\u015f Teknik Destek Ekibi<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/www.ihs.com.tr\/blog\/wordpress-te-action-ve-filter-hook-larini-anlamak-kendi-fonksiyonlarinizi-yazin\/#Gelismis-Guvenlik-Onlemleri-ve-Otomatik-Yedekleme-Cozumleri\" >Geli\u015fmi\u015f G\u00fcvenlik \u00d6nlemleri ve Otomatik Yedekleme \u00c7\u00f6z\u00fcmleri<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"WordPress-Hook-Mimarisine-Giris\"><\/span>WordPress Hook Mimarisine Giri\u015f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>WordPress&#8217;in g\u00fcc\u00fc, sadece sundu\u011fu \u00f6zelliklerde de\u011fil, ayn\u0131 zamanda bu \u00f6zelliklerin ne kadar kolay bir \u015fekilde geni\u015fletilebildi\u011finde yatar. Hook mimarisi, bu geni\u015fletilebilirli\u011fin tam merkezinde yer al\u0131r. Geli\u015ftiricilerin, sistemin i\u015fleyi\u015finin belirli noktalar\u0131na kendi fonksiyonlar\u0131n\u0131 &#8220;asmalar\u0131na&#8221; olanak tan\u0131yarak, WordPress&#8217;i adeta bir lego gibi par\u00e7alara ay\u0131r\u0131p yeniden birle\u015ftirmelerine imkan verir. Bu b\u00f6l\u00fcm, hook mimarisinin temel mant\u0131\u011f\u0131n\u0131 ve WordPress ekosistemindeki kritik rol\u00fcn\u00fc ele alacakt\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"WordPressin-Genisletilebilir-Yapisi-Nedir\"><\/span>WordPress&#8217;in Geni\u015fletilebilir Yap\u0131s\u0131 Nedir?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>WordPress&#8217;in geni\u015fletilebilir yap\u0131s\u0131, \u00e7ekirdek kod dosyalar\u0131n\u0131 de\u011fi\u015ftirmeden yeni \u00f6zellikler eklemeye veya mevcut i\u015flevselli\u011fi de\u011fi\u015ftirmeye olanak tan\u0131yan bir sistemdir. Bu, &#8220;Plug-in API&#8221; olarak da bilinen bir dizi aray\u00fcz sayesinde m\u00fcmk\u00fcnd\u00fcr. Hook&#8217;lar, bu API&#8217;nin en temel bile\u015fenleridir. \u00d6rne\u011fin, bir e-ticaret eklentisi, sipari\u015f tamamland\u0131\u011f\u0131nda bir fatura olu\u015fturmak i\u00e7in bir hook kullanabilir. Benzer \u015fekilde, bir g\u00fcvenlik eklentisi, kullan\u0131c\u0131 giri\u015f yapmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131nda ek bir do\u011frulama ad\u0131m\u0131 eklemek i\u00e7in yine bir hook&#8217;tan faydalan\u0131r. Bu yap\u0131 olmasayd\u0131, her WordPress g\u00fcncellemesi, geli\u015ftiricilerin yapt\u0131\u011f\u0131 t\u00fcm \u00f6zel de\u011fi\u015fikliklerin \u00fczerine yazarak onlar\u0131 ge\u00e7ersiz k\u0131lard\u0131.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Hook-Kavrami-WordPress-Cekirdegine-Guvenli-Mudahale\"><\/span>Hook Kavram\u0131: WordPress \u00c7ekirde\u011fine G\u00fcvenli M\u00fcdahale<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Hook, kelime anlam\u0131yla &#8220;kanca&#8221; demektir ve WordPress kontekstinde de tam olarak bu i\u015flevi g\u00f6r\u00fcr. WordPress \u00e7al\u0131\u015f\u0131rken, kod ak\u0131\u015f\u0131n\u0131n belirli noktalar\u0131nda &#8220;kancalar&#8221; b\u0131rak\u0131r. \u00d6rne\u011fin, bir sayfa ba\u015fl\u0131\u011f\u0131 olu\u015fturulmadan hemen \u00f6nce, bir yaz\u0131 veritaban\u0131na kaydedildikten sonra veya sitenin <code>&lt;head&gt;<\/code> b\u00f6l\u00fcm\u00fc olu\u015fturulurken bir hook tetiklenir. Geli\u015ftiriciler, bu kancalar\u0131 kullanarak kendi fonksiyonlar\u0131n\u0131 bu belirli anlarda \u00e7al\u0131\u015facak \u015fekilde ba\u011flayabilirler. Bu, \u00e7ekirdek dosyalar\u0131 (core files) d\u00fczenleme ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r, bu da sitenizin daha stabil, g\u00fcvenli ve gelecekteki g\u00fcncellemelere uyumlu kalmas\u0131n\u0131 sa\u011flar. G\u00fcvenli m\u00fcdahale, WordPress&#8217;in b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korurken sonsuz bir \u00f6zelle\u015ftirme potansiyeli sunar.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Action-ve-Filter-Hooklari-Arasindaki-Temel-Farklar\"><\/span>Action ve Filter Hook&#8217;lar\u0131 Aras\u0131ndaki Temel Farklar<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>WordPress&#8217;te iki ana hook t\u00fcr\u00fc bulunur: Action (Eylem) ve Filter (Filtre). Her ikisi de geli\u015ftiricilerin kod eklemesine izin verse de, temel ama\u00e7lar\u0131 ve \u00e7al\u0131\u015fma \u015fekilleri farkl\u0131d\u0131r. Action hook&#8217;lar\u0131, belirli bir olay ger\u00e7ekle\u015fti\u011finde bir eylem ger\u00e7ekle\u015ftirmek i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, bir yaz\u0131 yay\u0131nland\u0131\u011f\u0131nda sosyal medyada payla\u015f\u0131m yapmak gibi. Burada ama\u00e7 bir i\u015f yapmakt\u0131r ve genellikle geriye bir de\u011fer d\u00f6nd\u00fcrmez. Filter hook&#8217;lar\u0131 ise, veriyi i\u015flenirken de\u011fi\u015ftirmek veya filtrelemek i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, bir yaz\u0131n\u0131n ba\u015fl\u0131\u011f\u0131n\u0131 de\u011fi\u015ftirmek, i\u00e7eri\u011fe bir imza eklemek veya bir \u00fcr\u00fcn\u00fcn fiyat\u0131n\u0131 dinamik olarak ayarlamak gibi. Filter fonksiyonlar\u0131, de\u011fi\u015ftirilmi\u015f veriyi mutlaka geri d\u00f6nd\u00fcrmelidir (`return`).<\/p>\n<div class=\"karsilastirma\">\n<table>\n<thead>\n<tr>\n<th>\u00d6zellik<\/th>\n<th>Action Hook<\/th>\n<th>Filter Hook<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><b>Temel Ama\u00e7<\/b><\/td>\n<td>Bir olay ger\u00e7ekle\u015fti\u011finde bir eylem (g\u00f6rev) \u00e7al\u0131\u015ft\u0131rmak.<\/td>\n<td>Veriyi i\u015flenme s\u0131ras\u0131nda de\u011fi\u015ftirmek veya filtrelemek.<\/td>\n<\/tr>\n<tr>\n<td><b>Geri D\u00f6n\u00fc\u015f De\u011feri<\/b><\/td>\n<td>Genellikle bir de\u011fer d\u00f6nd\u00fcrmez (void).<\/td>\n<td>De\u011fi\u015ftirilmi\u015f veriyi mutlaka <code>return<\/code> ile geri d\u00f6nd\u00fcrmelidir.<\/td>\n<\/tr>\n<tr>\n<td><b>Kullan\u0131m \u00d6rne\u011fi<\/b><\/td>\n<td>Yaz\u0131 kaydedildi\u011finde e-posta g\u00f6ndermek.<\/td>\n<td>Yaz\u0131 ba\u015fl\u0131\u011f\u0131n\u0131n sonuna &#8220;(Okundu)&#8221; eklemek.<\/td>\n<\/tr>\n<tr>\n<td><b>Temel Fonksiyonlar<\/b><\/td>\n<td><code>add_action()<\/code>, <code>do_action()<\/code><\/td>\n<td><code>add_filter()<\/code>, <code>apply_filters()<\/code><\/td>\n<\/tr>\n<tr>\n<td><b>Analoji<\/b><\/td>\n<td>&#8220;Bu olay oldu\u011funda, <b>\u015funu yap<\/b>.&#8221;<\/td>\n<td>&#8220;Bu veriyi i\u015flemeden \u00f6nce, <b>bana sor<\/b> ve de\u011fi\u015ftir.&#8221;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"Action-Hooklari-Belirli-Zamanlarda-Gorev-Calistirmak\"><\/span>Action Hook&#8217;lar\u0131: Belirli Zamanlarda G\u00f6rev \u00c7al\u0131\u015ft\u0131rmak<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Action hook&#8217;lar\u0131, WordPress i\u015f ak\u0131\u015f\u0131ndaki belirli olaylara tepki vermenizi sa\u011flayan g\u00fc\u00e7l\u00fc ara\u00e7lard\u0131r. Bir kullan\u0131c\u0131 giri\u015f yapt\u0131\u011f\u0131nda, bir tema de\u011fi\u015ftirildi\u011finde veya bir yorum g\u00f6nderildi\u011finde bir eylem tetiklemek isterseniz, kullanaca\u011f\u0131n\u0131z ara\u00e7 Action hook&#8217;udur. Bu hook&#8217;lar, sitenize dinamik ve otomatize edilmi\u015f g\u00f6revler eklemenin anahtar\u0131d\u0131r. Temelde, WordPress&#8217;e &#8220;X olay\u0131 ger\u00e7ekle\u015fti\u011fi anda, benim belirtti\u011fim Y fonksiyonunu \u00e7al\u0131\u015ft\u0131r&#8221; demenin bir yoludur.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Action-Hook-Nedir\"><\/span>Action Hook Nedir?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Action hook, WordPress \u00e7ekirde\u011finin, temalar\u0131n veya eklentilerin y\u00fcr\u00fctme ak\u0131\u015f\u0131ndaki belirli noktalarda tan\u0131mlanm\u0131\u015f olay bildirimleridir. Geli\u015ftiriciler bu noktalara kendi fonksiyonlar\u0131n\u0131 &#8220;kaydedebilirler&#8221;. WordPress bu noktaya geldi\u011finde, kaydedilmi\u015f t\u00fcm fonksiyonlar\u0131 s\u0131rayla \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, mevcut bir s\u00fcrece m\u00fcdahale etmeden veya onu de\u011fi\u015ftirmeden ek i\u015flevsellik katman\u0131z\u0131 sa\u011flar. \u00d6rne\u011fin, <code>wp_footer<\/code> action hook&#8217;u, sayfan\u0131n HTML kodunun en alt\u0131na, <code>&lt;\/body&gt;<\/code> etiketinden hemen \u00f6nce bir kod par\u00e7ac\u0131\u011f\u0131 eklemek i\u00e7in ideal bir yerdir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Action-Hooklarin-Calisma-Mantigi-ve-Tetiklenme-Anlari\"><\/span>Action Hook&#8217;lar\u0131n \u00c7al\u0131\u015fma Mant\u0131\u011f\u0131 ve Tetiklenme Anlar\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Action hook&#8217;lar\u0131n \u00e7al\u0131\u015fma mant\u0131\u011f\u0131 olduk\u00e7a basittir. WordPress, kodlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131rken \u00f6nceden tan\u0131mlanm\u0131\u015f <code>do_action('hook_adi');<\/code> fonksiyonuna rastlad\u0131\u011f\u0131nda duraklar. Ard\u0131ndan, bu &#8216;hook_adi&#8217;na <code>add_action()<\/code> fonksiyonu ile ba\u011flanm\u0131\u015f olan t\u00fcm \u00f6zel fonksiyonlar\u0131 arar ve bulur. Bu fonksiyonlar\u0131, belirlenen \u00f6ncelik s\u0131ras\u0131na g\u00f6re tek tek \u00e7al\u0131\u015ft\u0131r\u0131r. T\u00fcm ba\u011fl\u0131 fonksiyonlar \u00e7al\u0131\u015ft\u0131ktan sonra, WordPress normal ak\u0131\u015f\u0131na devam eder. Tetiklenme anlar\u0131 \u00e7ok \u00e7e\u015fitlidir; bir teman\u0131n ba\u015flat\u0131lmas\u0131ndan (<code>after_setup_theme<\/code>), bir yaz\u0131n\u0131n silinmesine (<code>delete_post<\/code>), kullan\u0131c\u0131 panelinin y\u00fcklenmesine (<code>admin_init<\/code>) kadar y\u00fczlerce farkl\u0131 an bulunur.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Temel-Fonksiyonlar-add-action-ve-do-action\"><\/span>Temel Fonksiyonlar: `add_action()` ve `do_action()`<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Action hook sisteminin iki temel fonksiyonu vard\u0131r: <code>add_action()<\/code> ve <code>do_action()<\/code>.<\/p>\n<ul>\n<li><code>add_action('hook_adi', 'calistirilacak_fonksiyon_adi', $oncelik, $arguman_sayisi);<\/code>: Bu fonksiyon, bir hook&#8217;a kendi \u00f6zel fonksiyonunuzu ba\u011flamak i\u00e7in kullan\u0131l\u0131r. &#8216;hook_adi&#8217;, ba\u011flanmak istedi\u011finiz WordPress hook&#8217;unun ad\u0131d\u0131r. &#8216;calistirilacak_fonksiyon_adi&#8217; ise hook tetiklendi\u011finde \u00e7al\u0131\u015fmas\u0131n\u0131 istedi\u011finiz fonksiyonun ad\u0131d\u0131r. Di\u011fer parametreler ise opsiyoneldir.<\/li>\n<li><code>do_action('hook_adi', $arguman1, $arguman2);<\/code>: Bu fonksiyon, bir action hook&#8217;u tetiklemek i\u00e7in kullan\u0131l\u0131r. WordPress \u00e7ekirde\u011fi ve eklentiler bunu s\u00fcrekli yapar. Kendi \u00f6zel eklentilerinizi veya temalar\u0131n\u0131z\u0131 yazarken, di\u011fer geli\u015ftiricilerin de sizin kodunuza m\u00fcdahale edebilmesi i\u00e7in kendi \u00f6zel hook&#8217;lar\u0131n\u0131z\u0131 bu fonksiyon ile olu\u015fturabilirsiniz.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Pratik-Ornek-1-wp-head-ile-Header-Alanina-Analitik-Kodu-Ekleme\"><\/span>Pratik \u00d6rnek 1: `wp_head` ile Header Alan\u0131na Analitik Kodu Ekleme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Web sitenizin trafi\u011fini izlemek i\u00e7in Google Analytics gibi bir servis kullan\u0131yorsan\u0131z, izleme kodunu sitenizin <code>&lt;head&gt;<\/code> b\u00f6l\u00fcm\u00fcne eklemeniz gerekir. Bunu yapman\u0131n en do\u011fru ve g\u00fcvenli yolu <code>wp_head<\/code> action hook&#8217;unu kullanmakt\u0131r. Teman\u0131z\u0131n <code>functions.php<\/code> dosyas\u0131na a\u015fa\u011f\u0131daki kodu ekleyerek bunu kolayca yapabilirsiniz:<\/p>\n<p><code><br \/>\nfunction ihs_google_analytics_ekle() { <br \/>\n echo \"&lt;!-- Google Analytics --&gt; <br \/>\n &lt;script async src='https:\/\/www.googletagmanager.com\/gtag\/js?id=UA-XXXXX-Y'&gt;&lt;\/script&gt; <br \/>\n &lt;script&gt; <br \/>\n window.dataLayer = window.dataLayer || []; <br \/>\n function gtag(){dataLayer.push(arguments);} <br \/>\n gtag('js', new Date()); <br \/>\n gtag('config', 'UA-XXXXX-Y'); <br \/>\n &lt;\/script&gt; <br \/>\n &lt;!-- End Google Analytics --&gt;\"; <br \/>\n} <br \/>\nadd_action('wp_head', 'ihs_google_analytics_ekle');<br \/>\n<\/code><\/p>\n<p>Bu kod, <code>wp_head<\/code> hook&#8217;u her \u00e7al\u0131\u015ft\u0131\u011f\u0131nda <code>ihs_google_analytics_ekle<\/code> fonksiyonunu tetikler ve analitik kodunuzu sayfan\u0131z\u0131n ba\u015f\u0131na g\u00fcvenli bir \u015fekilde ekler.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Pratik-Ornek-2-save-post-ile-Yazi-Kaydedildiginde-E-posta-Gonderme\"><\/span>Pratik \u00d6rnek 2: `save_post` ile Yaz\u0131 Kaydedildi\u011finde E-posta G\u00f6nderme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bir blogda birden fazla yazar \u00e7al\u0131\u015f\u0131yorsa, yeni bir yaz\u0131 kaydedildi\u011finde veya g\u00fcncellendi\u011finde edit\u00f6re bildirim g\u00f6ndermek faydal\u0131 olabilir. <code>save_post<\/code> action hook&#8217;u bu senaryo i\u00e7in m\u00fckemmeldir. Bu hook, bir yaz\u0131 olu\u015fturuldu\u011funda veya g\u00fcncellendi\u011finde tetiklenir.<\/p>\n<p><code><br \/>\nfunction ihs_editoru_bilgilendir($post_id) { <br \/>\n $post_title = get_the_title($post_id); <br \/>\n $post_url = get_permalink($post_id); <br \/>\n $subject = 'Yeni bir yaz\u0131 kaydedildi: ' . $post_title; <br \/>\n $message = \"Merhaba Edit\u00f6r,\\n\\n\"; <br \/>\n $message .= \"'\" . $post_title . \"' ba\u015fl\u0131kl\u0131 yaz\u0131 kaydedildi veya g\u00fcncellendi.\\n\\n\"; <br \/>\n $message .= \"Yaz\u0131y\u0131 incelemek i\u00e7in: \" . $post_url; <br \/>\n wp_mail('editor@siteadresi.com', $subject, $message); <br \/>\n} <br \/>\nadd_action('save_post', 'ihs_editoru_bilgilendir');<br \/>\n<\/code><\/p>\n<p>Bu kod par\u00e7ac\u0131\u011f\u0131, her yaz\u0131 kaydedildi\u011finde, yaz\u0131n\u0131n ID&#8217;sini alarak ba\u015fl\u0131k ve URL bilgilerini \u00e7eker ve edit\u00f6r\u00fcn e-posta adresine bilgilendirici bir mail g\u00f6nderir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"add-action-Parametreleri-Oncelik-Priority-ve-Arguman-Sayisi-Accepted-Args\"><\/span>`add_action()` Parametreleri: \u00d6ncelik (Priority) ve Arg\u00fcman Say\u0131s\u0131 (Accepted Args)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><code>add_action()<\/code> fonksiyonu, iki zorunlu parametrenin (hook ad\u0131 ve fonksiyon ad\u0131) yan\u0131 s\u0131ra iki \u00f6nemli opsiyonel parametre daha al\u0131r:<\/p>\n<ul>\n<li><strong>\u00d6ncelik (Priority):<\/strong> Bu parametre, ayn\u0131 hook&#8217;a ba\u011fl\u0131 birden fazla fonksiyonun hangi s\u0131rayla \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirler. Varsay\u0131lan de\u011feri 10&#8217;dur. Daha d\u00fc\u015f\u00fck bir say\u0131, fonksiyonun daha \u00f6nce \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar (\u00f6rne\u011fin 9, 10&#8217;dan \u00f6nce \u00e7al\u0131\u015f\u0131r). Bu, \u00f6zellikle di\u011fer eklentilerin veya teman\u0131n fonksiyonlar\u0131ndan \u00f6nce veya sonra \u00e7al\u0131\u015fmas\u0131 gereken kodlar i\u00e7in kritiktir.<\/li>\n<li><strong>Arg\u00fcman Say\u0131s\u0131 (Accepted Args):<\/strong> Bu parametre, hook&#8217;un fonksiyonunuza ka\u00e7 tane arg\u00fcman (parametre) ge\u00e7irece\u011fini belirtir. Varsay\u0131lan de\u011feri 1&#8217;dir. \u00d6rne\u011fin, <code>save_post<\/code> hook&#8217;u asl\u0131nda 3 farkl\u0131 arg\u00fcman g\u00f6nderir (<code>$post_ID<\/code>, <code>$post<\/code>, <code>$update<\/code>). E\u011fer fonksiyonunuzda bu arg\u00fcmanlar\u0131n \u00fc\u00e7\u00fcn\u00fc de kullanmak isterseniz, bu parametreyi 3 olarak ayarlaman\u0131z gerekir.<\/li>\n<\/ul>\n<p>\u00d6rnek kullan\u0131m: <code>add_action('save_post', 'benim_fonksiyonum', 15, 3);<\/code> Bu, <code>benim_fonksiyonum<\/code>&#8216;u 15 \u00f6nceli\u011fiyle \u00e7al\u0131\u015ft\u0131r\u0131r ve <code>save_post<\/code> hook&#8217;unun g\u00f6nderdi\u011fi 3 arg\u00fcman\u0131 da kabul etmesini sa\u011flar.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Filter-Hooklari-Veriyi-Degistirmek-ve-Filtrelemek\"><\/span>Filter Hook&#8217;lar\u0131: Veriyi De\u011fi\u015ftirmek ve Filtrelemek<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Action hook&#8217;lar\u0131 belirli anlarda g\u00f6revler \u00e7al\u0131\u015ft\u0131r\u0131rken, Filter hook&#8217;lar\u0131 ise WordPress&#8217;in verilerini i\u015fleme ve g\u00f6r\u00fcnt\u00fcleme s\u00fcrecinde araya girerek bu verileri de\u011fi\u015ftirme imkan\u0131 sunar. Bir yaz\u0131n\u0131n ba\u015fl\u0131\u011f\u0131n\u0131, i\u00e7eri\u011fini, \u00f6zetini veya bir \u00fcr\u00fcn\u00fcn fiyat\u0131n\u0131 de\u011fi\u015ftirmek istedi\u011finizde Filter hook&#8217;lar\u0131 devreye girer. Bu hook&#8217;lar, WordPress&#8217;in \u00e7\u0131kt\u0131s\u0131n\u0131, temel kodlara dokunmadan, dinamik ve esnek bir \u015fekilde manip\u00fcle etmenizi sa\u011flar.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Filter-Hook-Nedir\"><\/span>Filter Hook Nedir?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Filter hook, WordPress&#8217;in veritaban\u0131ndan ald\u0131\u011f\u0131 veya i\u015flemeden \u00f6nce haz\u0131rlad\u0131\u011f\u0131 verileri &#8220;filtrelemek&#8221; i\u00e7in kod ak\u0131\u015f\u0131nda b\u0131rakt\u0131\u011f\u0131 bir kancad\u0131r. Bir filter hook&#8217;una ba\u011flanan fonksiyon, bir veri par\u00e7as\u0131n\u0131 (\u00f6rne\u011fin bir metin) al\u0131r, \u00fczerinde istedi\u011fi de\u011fi\u015fikli\u011fi yapar ve ard\u0131ndan de\u011fi\u015ftirilmi\u015f halini geri d\u00f6nd\u00fcr\u00fcr. Bu de\u011fi\u015ftirilmi\u015f veri, daha sonra WordPress&#8217;in i\u015f ak\u0131\u015f\u0131nda kullan\u0131lmaya devam eder. Temel ama\u00e7, bir eylem ger\u00e7ekle\u015ftirmek de\u011fil, mevcut bir de\u011feri de\u011fi\u015ftirmektir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Filter-Hooklarin-Calisma-Prensibi-ve-Veri-Akisi\"><\/span>Filter Hook&#8217;lar\u0131n \u00c7al\u0131\u015fma Prensibi ve Veri Ak\u0131\u015f\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Filter hook&#8217;lar\u0131n \u00e7al\u0131\u015fma prensibi bir zincir reaksiyonuna benzer. WordPress, bir veriyi i\u015fleyece\u011fi zaman <code>apply_filters('hook_adi', $veri);<\/code> fonksiyonunu \u00e7a\u011f\u0131r\u0131r. Bu, <code>$veri<\/code>&#8216;yi filtrenin ba\u015flang\u0131\u00e7 noktas\u0131na koyar. Sonra WordPress, bu &#8216;hook_adi&#8217;na <code>add_filter()<\/code> ile ba\u011flanm\u0131\u015f t\u00fcm fonksiyonlar\u0131 \u00f6ncelik s\u0131ras\u0131na g\u00f6re bulur. \u0130lk fonksiyon, orijinal <code>$veri<\/code>&#8216;yi al\u0131r, i\u015fler ve de\u011fi\u015ftirilmi\u015f halini d\u00f6nd\u00fcr\u00fcr. Bu d\u00f6nd\u00fcr\u00fclen de\u011fer, s\u0131radaki ikinci fonksiyonun girdisi olur. \u0130kinci fonksiyon da veriyi i\u015fler ve kendi sonucunu d\u00f6nd\u00fcr\u00fcr. Bu s\u00fcre\u00e7, o hook&#8217;a ba\u011fl\u0131 t\u00fcm fonksiyonlar bitene kadar devam eder. Sonunda elde edilen nihai de\u011fer, WordPress taraf\u0131ndan kullan\u0131l\u0131r. Bu nedenle filter fonksiyonlar\u0131nda <code>return<\/code> ifadesi hayati \u00f6nem ta\u015f\u0131r; unutulursa, veri kaybolur ve yerine bo\u015f bir de\u011fer ge\u00e7er.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Temel-Fonksiyonlar-add-filter-ve-apply-filters\"><\/span>Temel Fonksiyonlar: `add_filter()` ve `apply_filters()`<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Filter hook sisteminin de iki temel fonksiyonu bulunur:<\/p>\n<ul>\n<li><code>add_filter('hook_adi', 'degistirici_fonksiyon_adi', $oncelik, $arguman_sayisi);<\/code>: Bu fonksiyon, bir filter hook&#8217;una kendi de\u011fi\u015ftirici fonksiyonunuzu ba\u011flaman\u0131z\u0131 sa\u011flar. Parametreleri <code>add_action()<\/code> ile neredeyse ayn\u0131d\u0131r. &#8216;hook_adi&#8217;, m\u00fcdahale etmek istedi\u011finiz filtrenin ad\u0131d\u0131r. &#8216;degistirici_fonksiyon_adi&#8217; ise veriyi al\u0131p i\u015fleyecek olan fonksiyonunuzdur.<\/li>\n<li><code>apply_filters('hook_adi', $filtrelenecek_deger, $ek_arguman1, ...);<\/code>: Bu fonksiyon, bir filter hook&#8217;unu tetikler ve bir de\u011ferin filtrelenmesini ba\u015flat\u0131r. Kendi temalar\u0131n\u0131z\u0131 veya eklentilerinizi geli\u015ftirirken, \u00fcretti\u011finiz verilerin ba\u015fka geli\u015ftiriciler taraf\u0131ndan de\u011fi\u015ftirilebilmesine olanak tan\u0131mak i\u00e7in bu fonksiyonu kullanabilirsiniz. Bu, kodunuzu daha esnek ve geni\u015fletilebilir hale getirir.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Pratik-Ornek-1-the-title-ile-Yazi-Basliklarina-Ek-Bilgi-Ekleme\"><\/span>Pratik \u00d6rnek 1: `the_title` ile Yaz\u0131 Ba\u015fl\u0131klar\u0131na Ek Bilgi Ekleme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Sitenizdeki t\u00fcm yaz\u0131 ba\u015fl\u0131klar\u0131n\u0131n ba\u015f\u0131na veya sonuna belirli bir metin eklemek istedi\u011finizi varsayal\u0131m. \u00d6rne\u011fin, &#8220;\u00d6ne \u00c7\u0131kan: &#8221; gibi bir etiket eklemek i\u00e7in <code>the_title<\/code> filter hook&#8217;unu kullanabilirsiniz. Bu hook, yaz\u0131 ba\u015fl\u0131\u011f\u0131 ekrana yazd\u0131r\u0131lmadan hemen \u00f6nce \u00e7al\u0131\u015f\u0131r.<\/p>\n<p><code><br \/>\nfunction ihs_basliga_ek_yap($title) { <br \/>\n if (in_the_loop() && is_main_query()) { <br \/>\n return \"Okunmal\u0131: \" . $title; <br \/>\n } <br \/>\n return $title; <br \/>\n} <br \/>\nadd_filter('the_title', 'ihs_basliga_ek_yap');<br \/>\n<\/code><\/p>\n<p>Bu kod, <code>the_title<\/code> filtresine <code>ihs_basliga_ek_yap<\/code> fonksiyonunu ba\u011flar. Fonksiyon, mevcut ba\u015fl\u0131\u011f\u0131 (<code>$title<\/code>) al\u0131r, ba\u015f\u0131na &#8220;Okunmal\u0131: &#8221; metnini ekler ve yeni ba\u015fl\u0131\u011f\u0131 geri d\u00f6nd\u00fcr\u00fcr. <code>in_the_loop()<\/code> ve <code>is_main_query()<\/code> kontrolleri, bu de\u011fi\u015fikli\u011fin sadece ana sayfa d\u00f6ng\u00fcs\u00fcndeki yaz\u0131lar i\u00e7in ge\u00e7erli olmas\u0131n\u0131 sa\u011flar, men\u00fclerdeki veya y\u00f6netici panelindeki ba\u015fl\u0131klar\u0131 etkilemez.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Pratik-Ornek-2-excerpt-length-ile-Ozet-Uzunlugunu-Degistirme\"><\/span>Pratik \u00d6rnek 2: `excerpt_length` ile \u00d6zet Uzunlu\u011funu De\u011fi\u015ftirme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>WordPress, varsay\u0131lan olarak yaz\u0131 \u00f6zetlerini 55 kelime ile s\u0131n\u0131rlar. Bu uzunlu\u011fu teman\u0131z\u0131n tasar\u0131m\u0131na uyacak \u015fekilde de\u011fi\u015ftirmek isteyebilirsiniz. <code>excerpt_length<\/code> filtresi tam olarak bu i\u015f i\u00e7in vard\u0131r. Bu filtre, \u00f6zet uzunlu\u011funu belirten bir tamsay\u0131 de\u011feri \u00fczerinde \u00e7al\u0131\u015f\u0131r.<\/p>\n<p><code><br \/>\nfunction ihs_ozet_uzunlugunu_degistir($length) { <br \/>\n return 25; \/\/ \u00d6zet uzunlu\u011funu 25 kelime olarak ayarla <br \/>\n} <br \/>\nadd_filter('excerpt_length', 'ihs_ozet_uzunlugunu_degistir');<br \/>\n<\/code><\/p>\n<p>Bu basit kod, varsay\u0131lan 55 kelimelik s\u0131n\u0131r\u0131 ge\u00e7ersiz k\u0131lar ve t\u00fcm \u00f6zetlerin 25 kelime uzunlu\u011funda olmas\u0131n\u0131 sa\u011flar. Fonksiyon, orijinal uzunluk de\u011ferini (<code>$length<\/code>) al\u0131r ve yerine kendi istedi\u011fi de\u011feri (25) d\u00f6nd\u00fcr\u00fcr.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"add-filter-Parametreleri-ve-return-Ifadesinin-Kritik-Onemi\"><\/span>`add_filter()` Parametreleri ve `return` \u0130fadesinin Kritik \u00d6nemi<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><code>add_filter()<\/code> fonksiyonunun parametreleri (\u00f6ncelik ve arg\u00fcman say\u0131s\u0131) <code>add_action()<\/code> ile ayn\u0131 mant\u0131kla \u00e7al\u0131\u015f\u0131r. Ancak filter hook&#8217;lar\u0131 kullan\u0131rken en kritik nokta <code>return<\/code> ifadesidir. Bir filter fonksiyonu, kendisine gelen veriyi i\u015fledikten sonra mutlaka geri d\u00f6nd\u00fcrmelidir. E\u011fer bir filter fonksiyonunda <code>return<\/code> ifadesini unutursan\u0131z, o fonksiyona gelen veri kaybolur ve zincirdeki bir sonraki fonksiyona (veya do\u011frudan WordPress&#8217;e) bo\u015f bir de\u011fer (NULL) gider. Bu, genellikle sitenizde i\u00e7eriklerin veya ba\u015fl\u0131klar\u0131n kaybolmas\u0131 gibi istenmeyen sonu\u00e7lara yol a\u00e7ar. Bu y\u00fczden, yazd\u0131\u011f\u0131n\u0131z her filter fonksiyonunun sonunda de\u011fi\u015ftirilmi\u015f veriyi d\u00f6nd\u00fcrd\u00fc\u011f\u00fcn\u00fczden emin olmal\u0131s\u0131n\u0131z.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Kendi-Hook-Fonksiyonlarinizi-Yazma-ve-Ileri-Seviye-Kullanim\"><\/span>Kendi Hook Fonksiyonlar\u0131n\u0131z\u0131 Yazma ve \u0130leri Seviye Kullan\u0131m<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>WordPress&#8217;in sundu\u011fu binlerce mevcut hook&#8217;u kullanman\u0131n yan\u0131 s\u0131ra, kendi \u00f6zel hook&#8217;lar\u0131n\u0131z\u0131 olu\u015fturarak veya mevcut hook&#8217;lar\u0131 kald\u0131rarak daha karma\u015f\u0131k ve mod\u00fcler sistemler in\u015fa edebilirsiniz. Bu ileri seviye teknikler, eklentilerinizin ve temalar\u0131n\u0131z\u0131n di\u011fer geli\u015ftiriciler taraf\u0131ndan kolayca geni\u015fletilebilmesini sa\u011flar ve \u00fc\u00e7\u00fcnc\u00fc parti kodlarla olan etkile\u015fimleri y\u00f6netmenize olanak tan\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Mevcut-Hooklari-Nasil-Bulabilirsiniz\"><\/span>Mevcut Hook&#8217;lar\u0131 Nas\u0131l Bulabilirsiniz?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0130htiyac\u0131n\u0131z olan do\u011fru hook&#8217;u bulmak, geli\u015ftirme s\u00fcrecinin \u00f6nemli bir par\u00e7as\u0131d\u0131r. Do\u011fru kancay\u0131 bulmak i\u00e7in kullanabilece\u011finiz birka\u00e7 g\u00fcvenilir y\u00f6ntem vard\u0131r.<\/p>\n<h4>WordPress Geli\u015ftirici Dok\u00fcmantasyonu (Developer Handbook)<\/h4>\n<p>En g\u00fcvenilir kaynak, resmi WordPress Geli\u015ftirici Dok\u00fcmantasyonu&#8217;dur. &#8220;Hook Reference&#8221; b\u00f6l\u00fcm\u00fc, \u00e7ekirdekte bulunan t\u00fcm action ve filter hook&#8217;lar\u0131n\u0131 listeler. Her hook i\u00e7in detayl\u0131 a\u00e7\u0131klamalar, hangi parametreleri kabul etti\u011fi ve kaynak kodunda nerede bulundu\u011fu gibi bilgiler yer al\u0131r. Bir i\u015flevselli\u011fi de\u011fi\u015ftirmek veya bir olaya m\u00fcdahale etmek istedi\u011finizde, ilk bakman\u0131z gereken yer buras\u0131 olmal\u0131d\u0131r.<\/p>\n<h4>Tema ve Eklenti Kaynak Kodlar\u0131n\u0131 \u0130nceleme<\/h4>\n<p>Bazen ihtiyac\u0131n\u0131z olan hook, kulland\u0131\u011f\u0131n\u0131z bir tema veya eklenti taraf\u0131ndan sa\u011flan\u0131r. Bu durumda, ilgili teman\u0131n veya eklentinin kaynak kodlar\u0131n\u0131 incelemek en iyi yoldur. Kod i\u00e7erisinde <code>do_action()<\/code> ve <code>apply_filters()<\/code> aramas\u0131 yaparak, geli\u015ftiricinin hangi noktalarda d\u0131\u015far\u0131dan m\u00fcdahaleye izin verdi\u011fini g\u00f6rebilirsiniz. Bu, \u00f6zellikle premium temalar\u0131 veya kapsaml\u0131 eklentileri \u00f6zelle\u015ftirirken s\u0131k\u00e7a ba\u015fvurulan bir y\u00f6ntemdir.<\/p>\n<h4>Hata Ay\u0131klama (Debugging) Eklentileri Kullan\u0131m\u0131<\/h4>\n<p>Query Monitor gibi hata ay\u0131klama eklentileri, bir sayfa y\u00fcklenirken hangi hook&#8217;lar\u0131n, hangi s\u0131rayla ve hangi fonksiyonlar taraf\u0131ndan \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6rmenizi sa\u011flar. Bu, \u00f6zellikle hangi hook&#8217;un sayfan\u0131n belirli bir b\u00f6l\u00fcm\u00fcn\u00fc etkiledi\u011fini anlamaya \u00e7al\u0131\u015f\u0131rken son derece yararl\u0131d\u0131r. Bir sayfan\u0131n belirli bir an\u0131nda \u00e7al\u0131\u015fan t\u00fcm hook&#8217;lar\u0131 listeleyerek, arad\u0131\u011f\u0131n\u0131z kancay\u0131 daha kolay tespit etmenize yard\u0131mc\u0131 olur.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Kendi-Ozel-Hooklarinizi-Olusturma\"><\/span>Kendi \u00d6zel Hook&#8217;lar\u0131n\u0131z\u0131 Olu\u015fturma<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Eklentilerinizin veya temalar\u0131n\u0131z\u0131n ba\u015fkalar\u0131 taraf\u0131ndan geni\u015fletilebilir olmas\u0131n\u0131 istiyorsan\u0131z, kendi \u00f6zel hook&#8217;lar\u0131n\u0131z\u0131 olu\u015fturmal\u0131s\u0131n\u0131z. Bu, kodunuzun kritik noktalar\u0131na <code>do_action()<\/code> veya <code>apply_filters()<\/code> fonksiyonlar\u0131n\u0131 yerle\u015ftirerek yap\u0131l\u0131r.<\/p>\n<h4>`do_action()` ile Kendi Action Hook&#8217;unuzu Yaratma ve Kullanma<\/h4>\n<p>Kendi eylem kancan\u0131z\u0131 olu\u015fturmak i\u00e7in kodunuzda bir olay\u0131n ger\u00e7ekle\u015fti\u011fi noktaya <code>do_action()<\/code> fonksiyonunu eklemeniz yeterlidir. \u00d6rne\u011fin, bir form g\u00f6nderildi\u011finde ve ba\u015far\u0131yla i\u015flendi\u011finde di\u011fer geli\u015ftiricilerin de bir i\u015flem yapabilmesini sa\u011flamak isteyebilirsiniz.<\/p>\n<p><code><br \/>\nfunction ihs_formu_isle() { <br \/>\n \/\/ Form verilerini i\u015fle... <br \/>\n $form_verisi = $_POST; <br \/>\n \/\/ Veritaban\u0131na kaydet... <\/p>\n<p> \/\/ \u015eimdi \u00f6zel action hook'umuzu tetikleyelim <br \/>\n do_action('ihs_form_basariyla_gonderildi', $form_verisi); <br \/>\n}<br \/>\n<\/code><\/p>\n<p>Art\u0131k ba\u015fka bir geli\u015ftirici, sizin eklentinize dokunmadan, bu forma veri g\u00f6nderildi\u011finde bir e-posta g\u00f6ndermek i\u00e7in \u015fu kodu kullanabilir: <code>add_action('ihs_form_basariyla_gonderildi', 'bildirim_epostasi_gonder', 10, 1);<\/code><\/p>\n<h4>`apply_filters()` ile Kendi Filter Hook&#8217;unuzu Yaratma ve Kullanma<\/h4>\n<p>Kendi filtre kancan\u0131z\u0131 olu\u015fturmak, \u00fcretti\u011finiz bir verinin ba\u015fkalar\u0131 taraf\u0131ndan de\u011fi\u015ftirilmesine olanak tan\u0131r. \u00d6rne\u011fin, eklentinizin bir hata mesaj\u0131 g\u00f6r\u00fcnt\u00fcledi\u011fini ve bu mesaj\u0131n metninin \u00f6zelle\u015ftirilebilir olmas\u0131n\u0131 istedi\u011finizi varsayal\u0131m.<\/p>\n<p><code><br \/>\nfunction ihs_hata_mesaji_goster() { <br \/>\n $varsayilan_mesaj = \"Bir hata olu\u015ftu. L\u00fctfen tekrar deneyin.\"; <br \/>\n $gosterilecek_mesaj = apply_filters('ihs_hata_mesaji_metni', $varsayilan_mesaj); <br \/>\n echo '&lt;div class=\"error\"&gt;' . $gosterilecek_mesaj . '&lt;\/div&gt;'; <br \/>\n}<br \/>\n<\/code><\/p>\n<p>Bu sayede ba\u015fka bir geli\u015ftirici, varsay\u0131lan hata mesaj\u0131n\u0131 \u015fu \u015fekilde kolayca de\u011fi\u015ftirebilir:<br \/>\n<code><br \/>\nfunction ozel_hata_mesaji($mesaj) { <br \/>\n return \"\u00dczg\u00fcn\u00fcz, bir sorunla kar\u015f\u0131la\u015ft\u0131k. Destek ekibimizle ileti\u015fime ge\u00e7in.\"; <br \/>\n} <br \/>\nadd_filter('ihs_hata_mesaji_metni', 'ozel_hata_mesaji');<br \/>\n<\/code><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Eklenmis-Hooklari-Kaldirma-remove-action-ve-remove-filter\"><\/span>Eklenmi\u015f Hook&#8217;lar\u0131 Kald\u0131rma: `remove_action()` ve `remove_filter()`<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bazen bir teman\u0131n veya eklentinin bir hook arac\u0131l\u0131\u011f\u0131yla ekledi\u011fi bir i\u015flevselli\u011fi devre d\u0131\u015f\u0131 b\u0131rakmak veya de\u011fi\u015ftirmek isteyebilirsiniz. <code>remove_action()<\/code> ve <code>remove_filter()<\/code> fonksiyonlar\u0131 bu ama\u00e7la kullan\u0131l\u0131r. Bu fonksiyonlar\u0131 etkili bir \u015fekilde kullanabilmek i\u00e7in, kald\u0131r\u0131lacak olan hook&#8217;un ad\u0131n\u0131, ba\u011flanan fonksiyonun ad\u0131n\u0131 ve (e\u011fer varsay\u0131lan 10&#8217;dan farkl\u0131ysa) \u00f6ncelik de\u011ferini bilmeniz gerekir.<\/p>\n<h4>Bir Eklentinin veya Teman\u0131n Fonksiyonunu Devre D\u0131\u015f\u0131 B\u0131rakma<\/h4>\n<p>\u00d6rne\u011fin, bir e-ticaret eklentisinin \u00fcr\u00fcn sayfalar\u0131na otomatik olarak bir &#8220;Payla\u015f&#8221; butonu ekledi\u011fini ve siz bunu kald\u0131rmak istedi\u011finizi d\u00fc\u015f\u00fcnelim. Eklentinin kodunu inceledi\u011finizde \u015fu sat\u0131r\u0131 buldunuz: <code>add_action('woocommerce_after_single_product_summary', 'wc_output_product_data_tabs', 10);<\/code>. Bu fonksiyonu kald\u0131rmak i\u00e7in <code>functions.php<\/code> dosyan\u0131za \u015funu ekleyebilirsiniz:<\/p>\n<p><code><br \/>\nfunction ihs_woocommerce_tablarini_kaldir() { <br \/>\n remove_action('woocommerce_after_single_product_summary', 'wc_output_product_data_tabs', 10); <br \/>\n} <br \/>\nadd_action('wp_loaded', 'ihs_woocommerce_tablarini_kaldir');<br \/>\n<\/code><\/p>\n<p>Burada, kald\u0131rma i\u015flemini teman\u0131n veya eklentinin fonksiyonu eklendikten *sonra* \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in genellikle <code>wp_loaded<\/code> gibi daha ge\u00e7 bir hook i\u00e7inde yapmak \u00f6nemlidir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Anonim-Fonksiyonlar-Closures-ile-Hook-Kullanimi\"><\/span>Anonim Fonksiyonlar (Closures) ile Hook Kullan\u0131m\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>PHP 5.3 ve sonras\u0131 s\u00fcr\u00fcmlerle birlikte, hook&#8217;lara isimsiz (anonim) fonksiyonlar ba\u011flamak m\u00fcmk\u00fcn hale gelmi\u015ftir. Bu, \u00f6zellikle tek seferlik k\u00fc\u00e7\u00fck i\u015flemler i\u00e7in kullan\u0131\u015fl\u0131d\u0131r ve fonksiyon isimlerinin \u00e7ak\u0131\u015fma riskini ortadan kald\u0131r\u0131r. Ancak bu y\u00f6ntemle eklenen bir hook&#8217;un <code>remove_action()<\/code> veya <code>remove_filter()<\/code> ile kald\u0131r\u0131lamayaca\u011f\u0131n\u0131 unutmamak \u00f6nemlidir.<\/p>\n<p><code><br \/>\nadd_action('wp_footer', function() { <br \/>\n echo \"&lt;p&gt;Telif Hakk\u0131 &copy; \" . date('Y') . \" T\u00fcm haklar\u0131 sakl\u0131d\u0131r.&lt;\/p&gt;\"; <br \/>\n});<br \/>\n<\/code><\/p>\n<p>Bu kod, sayfan\u0131n alt\u0131na telif hakk\u0131 metnini eklemek i\u00e7in ayr\u0131 bir fonksiyon tan\u0131mlamak yerine, do\u011frudan <code>add_action<\/code> i\u00e7inde anonim bir fonksiyon kullan\u0131r.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"En-Iyi-Uygulamalar-ve-Sik-Yapilan-Hatalar\"><\/span>En \u0130yi Uygulamalar ve S\u0131k Yap\u0131lan Hatalar<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>WordPress hook&#8217;lar\u0131n\u0131 g\u00fc\u00e7l\u00fc ve etkili bir \u015fekilde kullanmak, sadece do\u011fru fonksiyonlar\u0131 bilmekle kalmaz, ayn\u0131 zamanda kodunuzu temiz, s\u00fcrd\u00fcr\u00fclebilir ve performansl\u0131 tutmak i\u00e7in en iyi uygulamalar\u0131 takip etmeyi de gerektirir. Bu b\u00f6l\u00fcmde, do\u011fru hook t\u00fcr\u00fcn\u00fc se\u00e7mekten hata ay\u0131klamaya kadar geli\u015ftirme s\u00fcrecinizi iyile\u015ftirecek \u00f6nemli ipu\u00e7lar\u0131n\u0131 ve ka\u00e7\u0131nman\u0131z gereken yayg\u0131n hatalar\u0131 ele alaca\u011f\u0131z.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Dogru-Hook-Turunu-Secmek-Action-mi-Filter-mi\"><\/span>Do\u011fru Hook T\u00fcr\u00fcn\u00fc Se\u00e7mek: Action m\u0131, Filter m\u0131?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>En temel ve en s\u0131k yap\u0131lan hatalardan biri, yanl\u0131\u015f hook t\u00fcr\u00fcn\u00fc se\u00e7mektir. Karar verirken kendinize \u015fu soruyu sorun: &#8220;Amac\u0131m bir \u015fey yapmak m\u0131, yoksa bir \u015feyi de\u011fi\u015ftirmek mi?&#8221;<\/p>\n<ul>\n<li>E\u011fer cevab\u0131n\u0131z &#8220;bir yaz\u0131 kaydedildi\u011finde <b>e-posta g\u00f6ndermek<\/b>&#8221; veya &#8220;sayfa alt\u0131na <b>bir script eklemek<\/b>&#8221; gibi bir eylem ise, <b>Action Hook<\/b> kullanmal\u0131s\u0131n\u0131z.<\/li>\n<li>E\u011fer cevab\u0131n\u0131z &#8220;yaz\u0131 ba\u015fl\u0131\u011f\u0131n\u0131n <b>metnini de\u011fi\u015ftirmek<\/b>&#8221; veya &#8220;kullan\u0131c\u0131 avatar\u0131n\u0131n <b>boyutunu de\u011fi\u015ftirmek<\/b>&#8221; gibi mevcut bir veriyi manip\u00fcle etmek ise, <b>Filter Hook<\/b> kullanmal\u0131s\u0131n\u0131z.<\/li>\n<\/ul>\n<p>Bir filter hook&#8217;u i\u00e7inde e-posta g\u00f6ndermek gibi eylemler yapmak (yan etkiler olu\u015fturmak) veya bir action hook&#8217;undan bir de\u011fer d\u00f6nd\u00fcrmeye \u00e7al\u0131\u015fmak, beklenmedik hatalara ve kodun okunabilirli\u011finin azalmas\u0131na neden olur.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Fonksiyon-Isimlendirme-ve-Cakismalari-Onleme-Prefixing\"><\/span>Fonksiyon \u0130simlendirme ve \u00c7ak\u0131\u015fmalar\u0131 \u00d6nleme (Prefixing)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>WordPress evreninde binlerce tema ve eklenti bir arada \u00e7al\u0131\u015f\u0131r. Bu nedenle, yazd\u0131\u011f\u0131n\u0131z fonksiyonlar\u0131n isimlerinin ba\u015fka bir eklenti veya tema ile \u00e7ak\u0131\u015fmamas\u0131 hayati \u00f6nem ta\u015f\u0131r. <code>gonder()<\/code> veya <code>ayar_kaydet()<\/code> gibi genel isimler kullanmaktan ka\u00e7\u0131n\u0131n. Bunun yerine, fonksiyonlar\u0131n\u0131za benzersiz bir \u00f6nek (prefix) ekleyin. Genellikle \u015firketinizin, projenizin veya kendi ad\u0131n\u0131z\u0131n k\u0131saltmas\u0131 kullan\u0131l\u0131r.<\/p>\n<p><b>K\u00f6t\u00fc:<\/b> <code>function add_analytics_code() { ... }<\/code><br \/>\n<b>\u0130yi:<\/b> <code>function ihs_add_analytics_code() { ... }<\/code><\/p>\n<p>Bu basit \u00f6nlem, &#8220;Cannot redeclare function&#8221; (Fonksiyon yeniden tan\u0131mlanamaz) gibi \u00f6l\u00fcmc\u00fcl hatalar\u0131n \u00f6n\u00fcne ge\u00e7er ve kodunuzun kim taraf\u0131ndan yaz\u0131ld\u0131\u011f\u0131n\u0131 daha net hale getirir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Kodunuzu-Nereye-Eklemelisiniz-functionsphp-Ozel-Eklenti-veya-Must-Use-Eklentiler\"><\/span>Kodunuzu Nereye Eklemelisiniz?: `functions.php`, \u00d6zel Eklenti veya Must-Use Eklentiler<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Hook&#8217;lar\u0131n\u0131z\u0131 kullanarak yazd\u0131\u011f\u0131n\u0131z \u00f6zel kodlar\u0131 nereye ekleyece\u011finiz, projenizin do\u011fas\u0131na ve kodun amac\u0131na ba\u011fl\u0131d\u0131r. \u00dc\u00e7 temel se\u00e7enek vard\u0131r ve her birinin avantajlar\u0131 ve dezavantajlar\u0131 bulunur.<\/p>\n<div class=\"karsilastirma\">\n<table>\n<thead>\n<tr>\n<th>Y\u00f6ntem<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<th>Avantajlar\u0131<\/th>\n<th>Dezavantajlar\u0131<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><b>Tema `functions.php` Dosyas\u0131<\/b><\/td>\n<td>Aktif teman\u0131n klas\u00f6r\u00fcnde bulunan dosyad\u0131r. Buraya eklenen kodlar sadece o tema aktifken \u00e7al\u0131\u015f\u0131r.<\/td>\n<td>H\u0131zl\u0131 ve kolay eri\u015fim. Temaya \u00f6zg\u00fc g\u00f6rsel veya i\u015flevsel de\u011fi\u015fiklikler i\u00e7in idealdir.<\/td>\n<td>Tema de\u011fi\u015ftirildi\u011finde t\u00fcm i\u015flevsellik kaybolur. Dosya zamanla \u00e7ok kalabal\u0131kla\u015fabilir.<\/td>\n<\/tr>\n<tr>\n<td><b>\u00d6zel Eklenti (Custom Plugin)<\/b><\/td>\n<td>Kendi yazd\u0131\u011f\u0131n\u0131z basit bir eklenti dosyas\u0131d\u0131r. T\u00fcm \u00f6zel kodlar\u0131n\u0131z\u0131 bu eklentiye toplars\u0131n\u0131z.<\/td>\n<td>Tema ba\u011f\u0131ms\u0131zd\u0131r. Temay\u0131 de\u011fi\u015ftirseniz bile i\u015flevsellik devam eder. Kodlar daha d\u00fczenli ve y\u00f6netilebilir olur.<\/td>\n<td>\u0130lk kurulumu `functions.php`&#8217;ye g\u00f6re bir ad\u0131m daha uzundur.<\/td>\n<\/tr>\n<tr>\n<td><b>Must-Use Eklentiler (mu-plugins)<\/b><\/td>\n<td><code>wp-content\/mu-plugins<\/code> klas\u00f6r\u00fcne konulan eklentilerdir. Y\u00f6netici panelinden etkinle\u015ftirilemez veya devre d\u0131\u015f\u0131 b\u0131rak\u0131lamaz, her zaman \u00e7al\u0131\u015f\u0131rlar.<\/td>\n<td>Site i\u00e7in kritik olan, asla devre d\u0131\u015f\u0131 kalmamas\u0131 gereken kodlar i\u00e7in idealdir. Otomatik olarak \u00e7al\u0131\u015f\u0131r.<\/td>\n<td>Y\u00f6netici panelinden y\u00f6netilemez. G\u00fcncelleme mekanizmas\u0131 yoktur.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"Hooklarla-Ilgili-Hata-Ayiklama-Ipuclari\"><\/span>Hook&#8217;larla \u0130lgili Hata Ay\u0131klama \u0130pu\u00e7lar\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Kodunuz bekledi\u011finiz gibi \u00e7al\u0131\u015fmad\u0131\u011f\u0131nda, sorunun kayna\u011f\u0131n\u0131 bulmak zor olabilir. \u0130\u015fte size yard\u0131mc\u0131 olacak birka\u00e7 ipucu:<\/p>\n<ul>\n<li><b>WP_DEBUG&#8217;\u0131 Etkinle\u015ftirin:<\/b> <code>wp-config.php<\/code> dosyan\u0131zda <code>WP_DEBUG<\/code> sabitini <code>true<\/code> olarak ayarlayarak PHP hatalar\u0131n\u0131, uyar\u0131lar\u0131n\u0131 ve bildirimlerini g\u00f6r\u00fcn\u00fcr hale getirin. Bu, bir\u00e7ok sorunu an\u0131nda ortaya \u00e7\u0131kar\u0131r.<\/li>\n<li><b>Hook&#8217;un \u00c7al\u0131\u015f\u0131p \u00c7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 Kontrol Edin:<\/b> Bir hook&#8217;un tetiklenip tetiklenmedi\u011finden emin de\u011filseniz, fonksiyonunuzun en ba\u015f\u0131na <code>error_log('Benim fonksiyonum \u00e7al\u0131\u015ft\u0131!');<\/code> gibi bir sat\u0131r ekleyerek sunucunuzun hata g\u00fcnl\u00fc\u011f\u00fcn\u00fc kontrol edin.<\/li>\n<li><b>Parametreleri \u0130nceleyin:<\/b> Fonksiyonunuza gelen parametrelerin ne i\u00e7erdi\u011fini g\u00f6rmek i\u00e7in <code>var_dump()<\/code> veya <code>print_r()<\/code> kullan\u0131n. \u00d6zellikle bir filter hook&#8217;unda, gelen verinin bekledi\u011finiz formatta olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek \u00f6nemlidir.<\/li>\n<li><b>Query Monitor Kullan\u0131n:<\/b> Bu eklenti, hangi hook&#8217;lar\u0131n hangi fonksiyonlar\u0131, hangi \u00f6ncelikle \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131 ve ne kadar s\u00fcrd\u00fc\u011f\u00fcn\u00fc g\u00f6stererek hata ay\u0131klama s\u00fcrecini inan\u0131lmaz derecede kolayla\u015ft\u0131r\u0131r.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Performans-Uzerindeki-Etkileri-ve-Kod-Optimizasyonu\"><\/span>Performans \u00dczerindeki Etkileri ve Kod Optimizasyonu<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Her <code>add_action<\/code> ve <code>add_filter<\/code> \u00e7a\u011fr\u0131s\u0131, WordPress&#8217;in y\u00fcr\u00fctme s\u00fcrecine k\u00fc\u00e7\u00fck bir ek y\u00fck getirir. Birka\u00e7 hook kullanmak genellikle fark edilmez, ancak y\u00fczlerce hook&#8217;a ba\u011flanan veya \u00e7ok s\u0131k tetiklenen hook&#8217;lar (\u00f6rne\u011fin <code>the_content<\/code> gibi her yaz\u0131 i\u00e7eri\u011finde \u00e7al\u0131\u015fanlar) i\u00e7inde yava\u015f \u00e7al\u0131\u015fan fonksiyonlar sitenizin performans\u0131n\u0131 olumsuz etkileyebilir. Kodunuzu optimize etmek i\u00e7in:<\/p>\n<ul>\n<li>Hook fonksiyonlar\u0131n\u0131z\u0131n i\u00e7inde karma\u015f\u0131k veritaban\u0131 sorgular\u0131 yapmaktan ka\u00e7\u0131n\u0131n. Veriyi \u00f6nbelle\u011fe almay\u0131 (caching) d\u00fc\u015f\u00fcn\u00fcn.<\/li>\n<li>Sadece gerekti\u011finde \u00e7al\u0131\u015facak ko\u015fullu mant\u0131k kullan\u0131n. \u00d6rne\u011fin, <code>if (is_admin()) { ... }<\/code> kullanarak bir kodun sadece y\u00f6netici panelinde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flay\u0131n.<\/li>\n<li>Fonksiyonlar\u0131n\u0131z\u0131 m\u00fcmk\u00fcn oldu\u011funca verimli ve h\u0131zl\u0131 \u00e7al\u0131\u015facak \u015fekilde yaz\u0131n. Gereksiz d\u00f6ng\u00fclerden ve dosya i\u015flemlerinden ka\u00e7\u0131n\u0131n.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"WordPress-Hosting-ve-Gelistirme-Ihtiyaclariniz-Icin-Neden-IHS-Telekomu-Tercih-Etmelisiniz\"><\/span>WordPress Hosting ve Geli\u015ftirme \u0130htiya\u00e7lar\u0131n\u0131z \u0130\u00e7in Neden \u0130HS Telekom&#8217;u Tercih Etmelisiniz?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>WordPress hook&#8217;lar\u0131 ile \u00f6zel fonksiyonlar yazmak ve sitenizi geli\u015ftirmek, do\u011fru altyap\u0131 ve ara\u00e7lar gerektirir. Yava\u015f bir <a href=\"https:\/\/www.ihs.com.tr\/web-hosting\/\" target=\"_blank\">hosting<\/a> ortam\u0131, geli\u015ftirme s\u00fcrecinizi yava\u015flatabilir ve kodunuzun ger\u00e7ek performans\u0131n\u0131 test etmenizi engelleyebilir. \u0130HS Telekom, WordPress geli\u015ftiricilerinin ihtiya\u00e7 duydu\u011fu y\u00fcksek performansl\u0131 ve esnek \u00e7\u00f6z\u00fcmleri sunarak projelerinizi hayata ge\u00e7irmeniz i\u00e7in ideal bir platform sa\u011flar.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Gelistirici-Dostu-Altyapi-ve-Araclar-SSH-WP-CLI-Git\"><\/span>Geli\u015ftirici Dostu Altyap\u0131 ve Ara\u00e7lar (SSH, WP-CLI, Git)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0130HS Telekom, modern geli\u015ftirme i\u015f ak\u0131\u015flar\u0131 i\u00e7in gerekli olan t\u00fcm ara\u00e7lar\u0131 sunar. SSH eri\u015fimi ile sunucunuza do\u011frudan ve g\u00fcvenli bir \u015fekilde ba\u011flanabilir, komut sat\u0131r\u0131 \u00fczerinden dosyalar\u0131n\u0131z\u0131 y\u00f6netebilirsiniz. WP-CLI deste\u011fi sayesinde WordPress kurulumlar\u0131n\u0131, eklenti ve tema g\u00fcncellemelerini, kullan\u0131c\u0131 y\u00f6netimini ve daha bir\u00e7ok i\u015flemi komut sat\u0131r\u0131ndan saniyeler i\u00e7inde yapabilirsiniz. Ayr\u0131ca Git entegrasyonu, kodunuzu versiyonlaman\u0131za ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinizi otomatize etmenize olanak tan\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Yuksek-Performansli-ve-WordPress-icin-Optimize-Edilmis-Sunucular\"><\/span>Y\u00fcksek Performansl\u0131 ve WordPress i\u00e7in Optimize Edilmi\u015f Sunucular<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Yazd\u0131\u011f\u0131n\u0131z kodun potansiyelini tam olarak ortaya \u00e7\u0131karmak i\u00e7in h\u0131zl\u0131 bir <a href=\"https:\/\/www.ihs.com.tr\/sunucu-kiralama\/\" target=\"_blank\">sunucu<\/a> kritik \u00f6neme sahiptir. \u0130HS Telekom&#8217;un <a href=\"https:\/\/www.ihs.com.tr\/web-hosting\/wordpress-hosting.html\" target=\"_blank\">wordpress hosting<\/a> paketleri, en son teknoloji NVMe SSD diskler, LiteSpeed web sunucusu ve sunucu seviyesinde \u00f6nbellekleme (caching) \u00e7\u00f6z\u00fcmleri ile donat\u0131lm\u0131\u015ft\u0131r. Bu optimizasyonlar, sitenizin hem ziyaret\u00e7iler hem de arama motorlar\u0131 i\u00e7in y\u0131ld\u0131r\u0131m h\u0131z\u0131nda a\u00e7\u0131lmas\u0131n\u0131 sa\u011flar, bu da geli\u015ftirdi\u011finiz \u00f6zelliklerin kullan\u0131c\u0131 deneyimini en \u00fcst d\u00fczeye \u00e7\u0131karmas\u0131na yard\u0131mc\u0131 olur.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"WordPress-Konusunda-Uzmanlasmis-Teknik-Destek-Ekibi\"><\/span>WordPress Konusunda Uzmanla\u015fm\u0131\u015f Teknik Destek Ekibi<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Geli\u015ftirme s\u00fcrecinde kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z sunucu tarafl\u0131 sorunlar veya konfig\u00fcrasyon ihtiya\u00e7lar\u0131 i\u00e7in uzman bir deste\u011fe sahip olmak paha bi\u00e7ilmezdir. \u0130HS Telekom&#8217;un teknik destek ekibi, WordPress&#8217;in teknik detaylar\u0131na hakimdir. PHP s\u00fcr\u00fcm\u00fc y\u00fckseltme, eklenti uyumsuzluklar\u0131 veya performans darbo\u011fazlar\u0131 gibi konularda size h\u0131zl\u0131 ve etkili \u00e7\u00f6z\u00fcmler sunarak projenize odaklanman\u0131z\u0131 sa\u011flarlar.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Gelismis-Guvenlik-Onlemleri-ve-Otomatik-Yedekleme-Cozumleri\"><\/span>Geli\u015fmi\u015f G\u00fcvenlik \u00d6nlemleri ve Otomatik Yedekleme \u00c7\u00f6z\u00fcmleri<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Emek vererek yazd\u0131\u011f\u0131n\u0131z kodlar\u0131 ve sitenizin verilerini g\u00fcvende tutmak en b\u00fcy\u00fck \u00f6nceliktir. \u0130HS Telekom, Web Application Firewall (WAF), d\u00fczenli zararl\u0131 yaz\u0131l\u0131m taramalar\u0131 ve DDoS korumas\u0131 gibi \u00e7ok katmanl\u0131 g\u00fcvenlik \u00f6nlemleri sunar. Ayr\u0131ca, sitenizin d\u00fczenli olarak otomatik yedeklenmesi, herhangi bir sorun an\u0131nda (\u00f6rne\u011fin hatal\u0131 bir kod da\u011f\u0131t\u0131m\u0131 sonras\u0131) sitenizi kolayca \u00f6nceki bir versiyonuna geri y\u00fckleyebilmenizi garanti alt\u0131na al\u0131r. Bu \u00f6zellikler, size g\u00f6n\u00fcl rahatl\u0131\u011f\u0131yla kodlama ve geli\u015ftirme yapma \u00f6zg\u00fcrl\u00fc\u011f\u00fc tan\u0131r.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress, esnek ve geni\u015fletilebilir yap\u0131s\u0131yla milyonlarca web sitesine g\u00fc\u00e7 veren lider i\u00e7erik y\u00f6netim sistemidir. Bu esnekli\u011fin temelinde ise &#8220;Hook&#8221; ad\u0131 verilen g\u00fc\u00e7l\u00fc&hellip;<\/p>\n","protected":false},"author":3,"featured_media":16347,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[397],"tags":[],"class_list":["post-16346","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/16346","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/comments?post=16346"}],"version-history":[{"count":1,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/16346\/revisions"}],"predecessor-version":[{"id":16348,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/16346\/revisions\/16348"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/media\/16347"}],"wp:attachment":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/media?parent=16346"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/categories?post=16346"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/tags?post=16346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}