İçeriğe geç
SOFTPUSULATeknoloji • Bilim • Yaşam • Deneyim

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.

WordPress İçin Özel Eklenti (Plugin) Geliştirme ve Kanca (Hook) Mimarisi
✓ Kaynak kontrolü✓ Güncel içerik

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.

SELÇUK profil fotoğrafı
İÇERİĞİ HAZIRLAYAN

SOFTPUSULA YAZARI
SoftPusula Editörü

Teknoloji, yazılım ve dijital dünyadaki gelişmeleri güvenilir kaynaklarla inceleyerek anlaşılır Türkçe ile aktarıyor.

330 yayınlanmış içerik
Kaynak ve alıntı bilgisi Orijinal kaynak Orijinal haberi aç ↗
BU İÇERİK NASILDI?

Görüşünüz bize yol gösterir.

Tek dokunuşla değerlendirin. Kişisel bilgi toplanmaz.

Yorum Yap

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