WordPress İçin Özel Eklenti (Plugin) Geliştirme ve Kanca (Hook) Mimarisi
Sitenizin hızını düşüren hazır eklentiler yerine kendi özel WordPress eklentinizi nasıl kodlayacağınızı ve Action/Filter kancalarını nasıl kullanacağınızı keşfedin.

Neden Temanın functions.php Dosyası Yerine Eklenti?
WordPress tabanlı sitelere özel bir işlev (örneğin özel bir yazı tipi yükleyici, form işleyici veya reklam alanı) eklemek istendiğinde, geliştiricilerin en sık başvurduğu yöntem temanın `functions.php` dosyasına kod eklemektir. Bu yöntem hızlı olsa da, uzun vadede sürdürülebilir değildir. Site temanızı değiştirdiğiniz an `functions.php` dosyanızdaki tüm özel kodlar silinir ve sitenizin işlevselliği kaybolur. Ayrıca çok fazla kod bu dosyaya yığıldığında hata ayıklamak kabusa dönüşür. Kendi özel WordPress eklentinizi (Plugin) yazmak, kodunuzu temadan tamamen bağımsız, modüler ve güvenli bir hale getirir.
İlk Eklenti Klasörünü ve Dosyasını Oluşturma
WordPress eklentileri, dosya yöneticisindeki `wp-content/plugins/` klasöründe barınır. Kendi eklentinizi oluşturmak için bu dizine girin ve `softpusula-ozel-islevler` adında yeni bir klasör oluşturun. Klasörün adının küçük harflerle ve boşluk yerine tire içermesine dikkat edin. Bu klasörün içine, klasör ismiyle aynı olacak şekilde bir PHP dosyası oluşturun (`softpusula-ozel-islevler.php`). WordPress\’in bu dosyayı bir eklenti olarak tanıyabilmesi için yapmanız gereken tek şey, dosyanın en üstüne standart PHP yorum satırlarıyla eklenti başlık bilgilerini yazmaktır.
Eklenti Başlık Bilgilerini (Plugin Header) Tanımlama
Oluşturduğunuz PHP dosyasını bir kod editörüyle (VS Code gibi) açın. Dosyanın en üstüne PHP açılış etiketini (`<?php`) koyduktan sonra şu yorum satırlarını ekleyin:
`/*`
`Plugin Name: SoftPusula Özel İşlevler`
`Description: Sitenin çekirdek işlevlerini temadan bağımsız yönetmek için özel eklenti.`
`Version: 1.0`
`Author: SoftPusula`
`*/`
Bu beş satırlık bilgi, kodu kaydettiğiniz anda WordPress yönetim panelindeki \’Eklentiler\’ menüsünde belirecektir. Panelden \’Etkinleştir\’ (Activate) butonuna tıkladığınızda artık kodlarınız sitenizde çalışmaya hazır hale gelir.
Kanca (Hook) Mantığı: Action ve Filter Farkı
WordPress\’in modüler yapısı \’Kancalar\’ (Hooks) üzerine kuruludur. Kendi kodunuzu çekirdek sisteme müdahale etmeden araya sıkıştırmanızı sağlarlar. İki ana kanca türü vardır: Actions (Eylemler) ve Filters (Filtreler).
`add_action()`: Sistemin belirli bir anında (örneğin sayfa yüklenirken, yazı yayınlanırken veya menü oluşturulurken) kendi fonksiyonunuzu çalıştırmanızı sağlar. Sisteme bir şey yaptırır.
`add_filter()`: Sistemdeki mevcut bir veriyi ekrana basılmadan veya veritabanına kaydedilmeden hemen önce yakalar, değiştirir ve geri gönderir. Örneğin bir makalenin başlığının sonuna otomatik olarak sitenizin adını eklemek için filtre kancası kullanılır.
Kısa Kod (Shortcode) Entegrasyonu
Eklentiniz üzerinden içerik editörlerine veya sayfa tasarımcılarına modüler parçalar sunmak istiyorsanız Kısa Kod API\’sini kullanmalısınız. Eklenti dosyanıza `add_shortcode(\’sp_imza\’, \’softpusula_imza_fonksiyonu\’);` şeklinde bir kod eklediğinizde, site editörü herhangi bir makalenin içine sadece `[sp_imza]` yazdığında, sizin PHP fonksiyonunuzun döndürdüğü HTML çıktısı (örneğin yazarın özel iletişim kutusu) o alanda otomatik olarak işlenir. Bu durum kod bilmeyen yazarlar için büyük bir esneklik sunar.
Güvenlik: Verileri Temizleme (Sanitization) ve Doğrulama
Bir eklenti yazarken en büyük öncelik güvenlik olmalıdır. Kullanıcıdan veri alınan veya veritabanına veri yazılan her noktada sanitizasyon yapılmalıdır. Eğer eklentiniz bir form içeriyorsa, kullanıcının girdiği e-posta adresini doğrudan veritabanına kaydetmeyin; `sanitize_email()` fonksiyonundan geçirin. Düz metin alıyorsanız `sanitize_text_field()` kullanın. Bu fonksiyonlar, kötü niyetli kişilerin sitenize zararlı SQL veya JavaScript (XSS) kodları enjekte etmesini engelleyen yerleşik WordPress savunma mekanizmalarıdır.
Hata Ayıklama (Debugging) ve Test Süreci
Eklentiyi geliştirirken kodunuzda bir hata yaparsanız, WordPress paneli çökebilir ve ekranda beyaz bir sayfa (White Screen of Death) belirebilir. Bu süreci sağlıklı yönetmek için `wp-config.php` dosyanızdaki `WP_DEBUG` değerini `true` olarak ayarlayın. Bu sayede hatalar beyaz ekran yerine kod satır numarasıyla birlikte size bildirilir. Eklentiniz son haline geldiğinde ve test edildiğinde, üretim ortamında (Canlı sitede) debug modunu tekrar kapatmayı unutmayın.
Başlangıç Kontrol Listesi
- Eklenti PHP dosyanızın başında güvenlik amacıyla `if ( ! defined( \’ABSPATH\’ ) ) { exit; }` kodunu kullanarak doğrudan dosya erişimini engelleyin.
- Farklı eklentilerle çakışmayı önlemek için fonksiyon isimlerinizin başına benzersiz bir önek koyun (Örn: `sp_ozel_fonksiyon`).
- Stil (CSS) ve betik (JS) dosyalarınızı yüklerken `wp_enqueue_script` ve `wp_enqueue_style` action kancalarını kullanın.
- Kullanmadığınız, test için açtığınız eski eklentileri sunucudan silerek siber saldırı yüzeyini daraltın.
Sonuç
Kendi WordPress eklentinizi geliştirmek, sizi ağır, yavaş ve reklam dolu üçüncü taraf hazır eklentilere bağlı kalmaktan kurtarır. Hook mimarisini kavramak, WordPress\’i sadece bir blog sistemi olmaktan çıkarıp devasa bir web uygulama çatısına (Framework) dönüştürür. SoftPusula görselinde WordPress geliştirici belgelerindeki eklenti başlığı veya Action/Filter kod yapısı arayüzü kullanılmalı; genel kodlama veya yapay web geliştirici görselleri kullanılmamalıdır.
Görüşünüz bize yol gösterir.
Tek dokunuşla değerlendirin. Kişisel bilgi toplanmaz.