WordPress do_action() Nedir? - Wolinka

WordPress do_action() Nedir?


Bir satır kodla kendi sahneni kurabilmek.

Bazen projede kritik bir an olur…
Bir sipariş tamamlanır, rezervasyon alınır ya da kullanıcı giriş yapar.
Tam o anda “şimdi sihir başlıyor” denir.
do_action() işte bu anlar için vardır.

WordPress’te do_action(), özel bir olay tanımlamayı ve tetiklemeyi sağlar.
Bu olay, add_action() ile bağlanan tüm fonksiyonları harekete geçirir.
Kısaca: “Burada bir şey gerçekleşti, kim dinliyorsa devreye girsin.”

add_action() başkasının sahnesinde yer almaktır. do_action() ise kendi sahneni kurmaktır.

Temel Kullanım

do_action( string $hook_name, mixed $arg1 = null, mixed $arg2 = null, ... );

$hook_name (zorunlu): Olayın adı; add_action() ile bu isme bağlanılır.
$arg1, $arg2, … (opsiyonel): Olay tetiklendiğinde dinleyicilere iletilen veriler.

Proje Akışına Katacağı Artılar

Genişletilebilirlik: Tema veya eklentilere eklenebilecek bağlantı noktaları yaratır.

Temiz kod yapısı: Ana işlevler sade kalır, ek işlemler farklı alanlara taşınır.

İşbirliği imkanı: Başka geliştiriciler kolayca sisteme entegre olabilir.

Kontrol: Olayın ne zaman ve nasıl çalışacağı tamamen geliştiricide olur.

Canlı Senaryo Örnekleri

WooCommerce’de Sipariş Tamamlanınca

add_action( 'woocommerce_thankyou', function( $order_id ) {
    $order = wc_get_order( $order_id );
    do_action( 'wlnk_order_completed', $order_id, $order );
});

add_action( 'wlnk_order_completed', 'wlnk_send_invoice', 10, 2 );
function wlnk_send_invoice( $order_id, $order ) {
    // Fatura entegrasyonu
}

Çekirdek WooCommerce akışına dokunmadan ek adımlar eklenebilir.

Admin Paneli Kaydetme Sonrası

function wlnk_save_settings( $payload ) {
    update_option( 'wlnk_opts', $payload );
    do_action( 'wlnk_settings_saved', $payload );
}

add_action( 'wlnk_settings_saved', 'wlnk_clear_caches', 10, 1 );
function wlnk_clear_caches( $payload ) {
    // Cache temizleme
}

Ayar kaydı sonrasında otomatik işlemler tetiklenebilir.

Uygulama Önerileri

Prefix kullanımı: wlnk_booking_created gibi benzersiz ön eklerle çakışmalar önlenebilir.

Anlamlı isimler: *_created, *_updated, *_deleted gibi eylem odaklı adlandırmalar tercih edilebilir.

Parametrelerin belgelenmesi: PHPDoc ile gönderilen verilerin açıklanması, diğer geliştiriciler için kolaylık sağlar.

Uyumluluk korunması: Yeni parametreler sona eklenirse mevcut dinleyiciler bozulmaz.

Ağır işlemleri asenkron yürütme: Action Scheduler gibi kuyruk sistemleri ile performans artırılabilir.

Hata izolasyonu: try/catch kullanımı ile hataların akışı bozması önlenebilir.

add_action() ile Farkı

Özellikdo_action()add_action()
AmacıOlay tetikler.Olaylara bağlanır.
KaynağıGeliştirici tanımlar.Çekirdek/tema/eklenti tanımlar.
Parametre rolüVeriyi dinleyicilere iletir.Kaç parametre alacağını belirtir.
Kullanım durumu“Burada bir şey gerçekleşti” ifadesi“Bu olursa şunu yap” ifadesi

Sonuç

do_action(), projene esneklik katan, işbirliğini kolaylaştıran ve gelecekte yapacağın geliştirmeler için sağlam bir zemin hazırlayan güçlü bir araçtır.
Bir olay tanımladığında, ona hangi fonksiyonların bağlanacağını ve bu fonksiyonların ne yapacağını tamamen sen belirlersin.

Bu sayede kodun hem modüler olur hem de üzerine kolayca yeni şeyler eklenebilir hale gelir.

Eğer “kendi sahneni kurma” fikri hoşuna gittiyse, bunun tamamlayıcısı olan add_action() Nedir? yazısına da mutlaka göz atmanı öneririm. Orada da başkalarının kurduğu sahnelerde nasıl yer alabileceğini anlattım.

Sevgiler 🫶

Eğer Faydalı Bulduysan, Devamı Burada

Eğer bu içerik sana fayda sağlıyorsa daha fazlası için abone olabilirsin. Zorlayıcı teklif yok, spam yok. Sadece işini büyütmene yardımcı olacak içten ipuçları. ✨

    Bir yanıt yazın

    E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir