WordPress, milyonlarca web sitesinin temelini oluşturan esnek ve güçlü bir içerik yönetim sistemidir. Bu başarının arkasında, geliştiricilere sunduğu Hook ve Filter mekanizmaları yatmaktadır. Bu sistemler sayesinde çekirdek WordPress kodunu değiştirmeden işlevsellik eklemek veya mevcut davranışları özelleştirmek mümkündür.
Bu makalede, WordPress Hook sistemi hakkında derinlemesine bilgi verecek, eklentiler geliştirirken aksiyon (action) ve filtre (filter) kullanımının püf noktalarını örneklerle açıklayacağız.
1. WordPress Hook Nedir?
Hook, WordPress’in çalışması sırasında belirli bir noktada özel bir işlevi (fonksiyonu) çağırmanıza olanak sağlayan bir yapıdır. İki temel türü vardır:
- Actions (Aksiyonlar): WordPress çalışırken belirli bir olay gerçekleştiğinde (örneğin, bir yazı yayınlandığında) belirlediğiniz işlevi çalıştırır.
- Filters (Filtreler): WordPress bir veri parçasını ekrana basmadan önce bu veriyi değiştirmenize olanak tanır.
2. Action (Aksiyon) Kullanımı
Aksiyonlar, WordPress’in bir olay gerçekleştiğinde bir işlevi tetiklemesini sağlar.
Örnek: Yazı Yayınlandığında E-posta Gönderme
function bayraknet_yazi_yayinlandi($post_ID) {
$post = get_post($post_ID);
$admin_email = get_option('admin_email');
wp_mail($admin_email, 'Yeni Yazı Yayınlandı', 'Yeni yazınız yayınlandı: ' . $post->post_title);
}
add_action('publish_post', 'bayraknet_yazi_yayinlandi');
Açıklama:
publish_posthook’u bir yazı yayınlandığında devreye girer ve e-posta gönderir.
3. Filter (Filtre) Kullanımı
Filtreler, WordPress’in bir veriyi işlemeden önce sizin değiştirmenize olanak tanır.
Örnek: Yazı Başlıklarını Özelleştirme
function bayraknet_baslik_degistir($title) {
if (is_single()) {
return '🔥 ' . $title;
}
return $title;
}
add_filter('the_title', 'bayraknet_baslik_degistir');
Açıklama:
the_titlefiltresi ile tekil yazı başlıklarının başına emoji ekleniyor.
4. Kendi Hook’unuzu Tanımlama
WordPress’in sunduğu hook’larla sınırlı değilsiniz. Kendi eklentinizde ya da temanızda özel hook’lar oluşturabilirsiniz.
Örnek: Özel Hook Tanımı ve Kullanımı
Hook Oluşturma:
do_action('bayraknet_custom_action', $data);
Hook’a Fonksiyon Bağlama:
function bayraknet_ozel_islem($data) {
// İşlem yapılacak kodlar
}
add_action('bayraknet_custom_action', 'bayraknet_ozel_islem');
Açıklama: Bu yapı sayesinde, eklentinizin diğer geliştiriciler tarafından genişletilmesine olanak sağlarsınız.
5. Hook Önceliği ve Parametre Sayısı
Hook’lar çalıştırılırken birden fazla fonksiyon bağlanabilir. Öncelik değeri düşük olan önce çalışır. Varsayılan öncelik: 10.
add_action('init', 'ilk_fonksiyon', 5);
add_action('init', 'ikinci_fonksiyon', 15);
Ayrıca filtrelerde işlevin kaç parametre alacağı belirtilmelidir:
add_filter('example_filter', 'fonksiyon_adi', 10, 2);
6. Eklenti Geliştirme Sırasında Hook Kullanımı
Hook’ları kullanarak eklentinizi:
- SEO uyumlu hale getirebilir
- Veri manipülasyonu yapabilir
- Admin arayüzüne özel paneller ekleyebilir
- REST API davranışlarını değiştirebilirsiniz
Örnek: Yönetim Paneline Özel Menü Eklemek
function bayraknet_admin_menu() {
add_menu_page(
'BayrakNET Panel',
'BayrakNET',
'manage_options',
'bayraknet-panel',
'bayraknet_panel_icerik'
);
}
add_action('admin_menu', 'bayraknet_admin_menu');
function bayraknet_panel_icerik() {
echo '<h1>BayrakNET Eklenti Ayarları</h1>';
}
7. İyi Uygulamalar
- Fonksiyon isimlerinizi benzersiz hale getirin (örn:
bayraknet_öneki) - Hook listelerini ve açıklamalarını düzenli tutun
- remove_action() ve remove_filter() ile kontrolü elinizde tutun
- Geliştirici belgelerini okuyun: https://developer.wordpress.org/plugins/hooks/
Değerlendirme
WordPress’in Hook ve Filter sistemi, özelleştirme ve genişletme gücünün temelidir. Eklenti geliştirirken bu yapıyı iyi anlamak, esnek, sürdürülebilir ve başka geliştiricilerle uyumlu çözümler üretmenizi sağlar. Kendi hook’larınızı tanımlayarak projelerinizi modüler hale getirebilir, WordPress ekosisteminde güçlü araçlar geliştirebilirsiniz.
Eğer WordPress’te ustalaşmak istiyorsanız, Hook’lar dünyasına dalmaktan çekinmeyin. Çünkü asıl sihir, bu küçük ama etkili dokunuşlarda gizlidir.







