WordPress için eklenti yazmak…-2

Önceki yazıyı okumayanlar lütfen şu linke tıklayarak ilk yazıdaki bebek adımlarını takip etsinler ve bu yazıya geçsinler. İlk yazıda anlattığım üzere ufak bir eklenti yazmıştık. Tek yaptığı şey merhaba_dunya fonksiyonundaki Merhaba Dünya yazısını istediğimiz alana yazmasıydı. İkinci bölümde bu işi biraz daha ilerleteceğiz. Çok büyük bir atılım yapmayacağız ama en azından bizim tarafımızdan yönetilebilen bir eklenti oluşturacağız. Öncelikle güvenlik ile ilgili bir şey eklememiz gerekiyor eklenti dosyamıza.

Önceki yazıdan kaldığımız şekilde php kodumuz şuydu;

Bu koda ek olarak ve fonksiyonlarımızdan önce, dosyamızın direkt olarak tarayıcı üzerinden çağırılmasını engelleyici bir kod eklememiz gerekmekte. O da şu oluyor;

Bu kodu fonksiyonumuzdan önce (eklenti tanımı yapılan yerin hemen altına) ekleyince görünüm şöyle olmakta.

Bunu yapmamızın nedenini yukarıda anlatmıştım.

Peki bu kod ne yapar?

Şöyle ki eklenti dosyanızın belirli bir yolu olacaktır. http://www.siteniz.com/wp-content/plugins/eklenti-adiniz/eklenti-adiniz.php Bu yol ile tarayıcı üzerinden çağırıldığında kodlarınız çalışacaktır. En azından belirli güncelleme betikleri barındırıyorsanız bunların boş dönmesi sağlanarak bir açık kullanılmış ve kullanan sistemde güvenlik zaafiyeti oluşturmuş olacaksınız. Bunu engellemek için bu tip çağırımlarda hata verdiritme yoluna gidiyoruz. Yukarıdaki kod tüm dosya içeriğinizi You are not allowed to call this page directly. haline çevirerek işlemi sonlandıran die komutunu sisteme gönderiyor ki, bu da işlem ve işlemlerin durdurulmasını sağlar.

Güvenlik meselesini hallettiysek gelelim başka bir önemli hususa.

Eklenti Yönetim Sayfası Oluşturmak

Eklentimizin yönetilebilir şeyler barındırmasını istiyorsak, bunun WordPress yönetim paneli içerisinde de bir yeri olmalı. Bunu yapabilmek için bir sayfa, yükleme, silme ve güncelleme işlemlerini yapacak fonksiyonları oluşturmalıyız. Sırasıyla bunları ekliyorum.

Yönetim sayfası oluşturabilmek için önce eklenti kurulumunda bunu WordPress fonksiyonuyla belirtmeli ve oluşturmalıyız. İlk Önce yönetim sayfasını oluşturalım.

Basit bir HTML form 🙂 Bunu sisteme aktarmak için yapmamız gereken daha çok şey var ama.

Yönetim Sayfasını Menüye Kaydettirmek

Yönetim alanı için yukarıdaki kodumuzu yazdık ama hala işimiz bitmiş değil. Yukarıdaki kodu önce WordPress menü alanına kaydettirmeli, sonra da bu sayfaya erişimi sağlamalıyız. Peki bunu nasıl yapacağız?

Öncelike add_action özelliğini kullanmanız gerekmekte. Bu özellik ile istediğimiz bir fonksiyonu, istediğimiz menüye, üst kısımdaki css kodlarının arasına, javascript dosyalarının içine vb. yerlere eklemek için kullanabiliyoruz. Biz şimdilik admin_menu alanında değişiklik yapacağız. Bunun için öncelikle şu kodu bir inceleyelim.

Gördüğünüz gibi menümüz için bir fonksiyon kullandık. add_action özelliğini admin_menu alanına eklentim_yonetim fonksiyonumuzu eklemek için çağırdık. Peki bu fonksiyon basit bir anlatımla ne yapar?

Şunu yapmakta. Bize Eklentim adı altında bir menü oluşturmakta. add_options_page kodunun içerisindeki alanlar Ayarlar alanı altına bir ek menü açar ve eklentimizin menüsünü sekizinci sıraya ekler ve bunu yol olarak options-general.php?page=eklentim yolu ile çağırır. Kullanacağı fonksiyon (bizim admin menümüz) ise eklentim_fonks adında birazdan yazacağımız fonksiyondur.

Şimdi fonksiyonumuzu yazalım;

Yukarıda gördüğünüz üzere php etiketlerini kapattık. Bunu neden yaptık? HTML fonksiyonlarımızı birton echo ile çağırmak yerine tek başına ve bir kere çağırmak için. Genel anlamda kodumuz şu şekilde oldu.

Bu kodlar şu anda verinizi kaydetmez, kaydettiklerinizi göstermez, sadece bir yönetim panelinin başlangıcını yaptık. İşlerden ayırabildiğim zamanlarda ufak ufak ilerlemeye devam edeceğiz. Bir sonraki yazımda yönetim panelini kullanarak değerlerimizi kaydettirmeyi, ilk yükleme anında yüklenecek olan ve eklentiyi kaldırma durumunda sileceğimiz verilerimizi ayarlayacağız.

Eğer bir soru, düşünce veya anlatımımda bulduğunuz hata varsa lütfen belirtiniz.

İlk Yazı : WordPress için eklenti yazmak…
Üçüncü Yazı : WordPress için eklenti yazmak…-3
Dördüncü Yazı : WordPress için eklenti yazmak…-4

Selametle

  • Cenkatalay

    üstad çok güzel anlatmışsın.işime yarayacak.çok teşekkür ederim.

    • Cenk 4 yazılık bu serinin tamamını okumanı tavsiye ediyorum. Teşekkürler

  • demir

    Tamda aradağım yazı dizisi. WordPress eklentilerini yazmaya merak sarmıştım açıkcası WP ile pek haşir naşir değilim sadece mantığını kavramak için biraz araştırma yaparken sitenize rastladım. Güzel ve anlaşılır bir anlatım olmuş. Tebrik ederim.

    • Beğendiğine sevindim Demir. Umarım WordPress ile daha fazla ilgilenmeni sağlar bu yazı dizisi.

      Teşekkürler

  • Ahmet

    /* Direkt Çağrıları Engelleyelim */ altındakı kod local’de çalışmıyor direk wordpress blog sayfasına die içindeki mesjı basıyor ekrana bilginize.

    • Ahmet,

      Bahsettiğin kod zaten dosyana direkt olarak erişmeye çalışanları kısıtlamak için. Yani sitende WordPress altyapısı hariç sen tarayıcıdan erişmeye çalıştığında bastığı şey doğru. die() içindeki yazıyı görüyorsan işlevsel olarak doğru çalışıyor demektir. Local için birşey diyemem.

  • Emrah ipekyol

    eklentim_fonks() nun için ufak bir yazım hatası var.
    <input type="submit" id="submit" name="submit" value="”>
    birtane “/” fazla olmuş o yüzden hata veriyor.

    Hocam düzeltebilirmisiniz.
    <input type="submit" id="submit" name="submit" value="”>

    Ellerinize sağlık bu arada baya faydalı ve açıklayıcı olmuş. sağolun.

    • Emrah,

      Teşekkür ederim. Yardımcı olabildiysem ne mutlu. fazla / işaretini kaldırdım 🙂

  • Bariş Türkmen

    Ellerinize sağlık değerli bir paylaşım..

WordPress gururla sunar.Theme: Flat by YoArts. WpAdamı Uyarlaması : Serkan Algur