Ö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;
<?php /* Plugin Name: Eklenti Adı Plugin URI: Eklenti linki (sitenizden bir link olabilir) Description: Eklenti Açıklaması Version: Versiyon (0.1 gibi) Author: Adınız Soyadınız ya da hangi ismi kullanmak istiyorsanız Author URI: Varolan site adresiniz License: GNU *//*Fonksiyon yazalım*/function merhaba_dunya() { echo "Merhaba Dünya"; } ?>
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;
if (preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
Bu kodu fonksiyonumuzdan önce (eklenti tanımı yapılan yerin hemen altına) ekleyince görünüm şöyle olmakta.
<?php /* Plugin Name: Eklenti Adı Plugin URI: Eklenti linki (sitenizden bir link olabilir) Description: Eklenti Açıklaması Version: Versiyon (0.1 gibi) Author: Adınız Soyadınız ya da hangi ismi kullanmak istiyorsanız Author URI: Varolan site adresiniz License: GNU *//* Direkt Çağrıları Engelleyelim */if (preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); } /*Fonksiyon yazalım*/function merhaba_dunya() { echo "Merhaba Dünya"; } ?>
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.
<div style="margin-top:10px;"> <h2>Eklentim Yönetim Sayfası</h2> <form method="post" action-xhr="#"> <label for="merhaba">Göstermek İstediğiniz Yazıyı Yazın</label> <input type="text" id="merhaba" name="merhaba" value=""/><br /> <input type="submit" id="submit" name="submit" value="<?php _e('Save Changes'); ?>"> </form> </div>
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.
add_action('admin_menu', 'eklentim_yonetim'); function eklentim_yonetim() { add_options_page('Eklentim','Eklentim', '8', 'eklentim', 'eklentim_fonks'); }
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;
function eklentim_fonks() { ?> <div style="margin-top:10px;"> <h2>Eklentim Yönetim Sayfası</h2> <form method="post" action-xhr="#"> <label for="merhaba">Göstermek İstediğiniz Yazıyı Yazın</label> <input type="text" id="merhaba" name="merhaba" value=""/><br /> <input type="submit" id="submit" name="submit" value="<?php _e('Save Changes'); ?>"> </form> </div> <?php }
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.
<?php /* Plugin Name: Eklenti Adı Plugin URI: Eklenti linki (sitenizden bir link olabilir) Description: Eklenti Açıklaması Version: Versiyon (0.1 gibi) Author: Adınız Soyadınız ya da hangi ismi kullanmak istiyorsanız Author URI: Varolan site adresiniz License: GNU *//* Direkt Çağrıları Engelleyelim */if (preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); } /* Admin Alanı İçin Sayfa Linki ve Sayfamızı Oluşturalım */add_action('admin_menu', 'eklentim_yonetim'); function eklentim_yonetim() { add_options_page('Eklentim','Eklentim', '8', 'eklentim', 'eklentim_fonks'); } function eklentim_fonks() { ?> <div style="margin-top:10px;"> <h2>Eklentim Yönetim Sayfası</h2> <form method="post" action-xhr="#"> <label for="merhaba">Göstermek İstediğiniz Yazıyı Yazın</label> <input type="text" id="merhaba" name="merhaba" value=""/><br /> <input type="submit" id="submit" name="submit" value="<?php _e('Save Changes'); ?>"> </form> </div> <?php } /*Fonksiyon yazalım*/function merhaba_dunya() { echo "Merhaba Dünya"; } ?>
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