WordPress için eklenti yazmak...-3

WordPress için eklenti yazmak…-3

WordPress için eklenti yazmak… ve WordPress için eklenti yazmak…-2 yazılarını okuduysanız devam edelim. Tabii ki ufak özet geçeceğim bu bölüme başlamadan. İşlerimin yoğunluğundan dolayı biraz da olsa boşladım hem blogu hem de bu makaleleri. Şimdi aşağıda neler yaptığımıza dair ufak bir tanım yapalım. Daha önce ilk ve ikinci yazıyı okumayan arkadaşlar lütfen önce onları okuyunuz.

Neler Yaptık?

Öncelikle ilk iki yazıda basit bir eklenti yazarak sizlerin de eklenti yazabilmenizi, fonksiyonlar olarak eklediğiniz şeyleri her tema, düzen ya da yeni kurulumda dosya düzenlemek yerine bu yaptığınız eklentilerle destekleyebilmenizi sağlayacak basit bir şekilde alnatmaya çalıştım. Şu anda yönetim paneli olan -ama birşeyi kaydetmeyen ve otomatik olarak bunu yazı içeriğine eklemeyen- bir eklenti yazdık. Adını da Eklenti Adı koyduk. Tabii bu isim sadece anlatımlık. Siz ne isterseniz onu yazarsınız. Gelelim bu bölümde yapacaklarımıza.

Neler Yapacağız?

Bu yazıda ilk yükleme anında eklenecek olan seçeneğimizi ve bunun içeriğini yani, varsayılan olarak gelecek olan içeriğimizi, kaldırılma / devredışı bırakma anında vereceğimiz komutla değerlerin silinmesini sağlayacağız. Güncelleme betiğini yazacağız. Yani siz kaydet butonuna bastığınızda ne yapması gerektiğini yazacağız. Kısacasız eklentinin %85-90 kadarını bitirmiş olacağız. Uzun bir yazı olacak, dikkat!

Başlayalım

Öncelikle bu yazıyla beraber register_activation_hook ve register_deactivation_hook fonksiyonlarını kullanacağız. Kısaca açıklamak gerekirse register_activation_hook Eklentiyi aktif ettiğimiz esnada çalışacak olan fonksiyonu tanımlar ve işleme alınmasını sağlar, register_deactivation_hook ise eklenti devre dışı yapıldığı (ektisizleştirildiği) anda aktif olacak ve işleme alınacak fonksiyonu tanımlar. Yukarıda linklerden WordPress Codex sayfasındaki fonksiyon referanslarına ulaşarak da buradan bilgiyi alabilirsiniz.

Eklentimizin varsayılanlarını ayarlamak

Şimdi eklentimiz ilk çalıştırıldığında yapılacak işlemleri, yani varsayılan olarak gelecek bilgimizi, opsiyonumuzu, seçeneğimizi atayalım. Seçeneğimizin adı eklenti_secenek olsun. Tanımlama yapacağımız fonksiyonun adı da eklenti_varsayilan olsun. Varsayılan değerimiz de Merhaba Dünya! olsun. Onu da şöyle yapıyoruz.


//Varsayılan Değer Atayalım
register_activation_hook(__FILE__, 'eklenti_varsayilan');
function eklenti_varsayilan( ) {
				add_option('eklenti_secenek', 'Merhaba Dünya!');
}

Yukarıdaki kod ile birlikte sistem eklentimizi aktifleştirdiğimizde, fonksiyon içerisindeki add_option betiği otomatik olarak veritabanına, wp_options tablosunun içine eklenti_secenek adında bir alan açacak ve değerini de Merhaba Dünya! olarak atayacaktır. Referans: add_option.

Bunu çağırmayı, değiştirmeyi anlatacağım ama bir de eklentimizi devre dışı bıraktığımızda geçerli olacak olan kodu yazalım;

//Değerleri Silelim
register_deactivation_hook(__FILE__, 'eklenti_kaldirildi');
function eklenti_kaldirildi( ) {
				delete_option('eklenti_secenek');
}

Yukarıda yazdığımız fonksiyon içerisinde bulunan delete_option betiği ile wp_options içerisindeki alanı silmiş olduk. Yani ne yazdıysak silinmiş oldu. Referans:delete_option.

Diyeceksiniz ki neden tek bir seçenek var. İlk iki yazıda tek satır içine yazdıklarımızı gösteren bir eklenti paneli yazdık da ondan. WordPress için eklenti yazmak…-2 yazısına bir göz atın isterseniz.

Eklenti ve fonksiyonlarınızın başka eklentilerle çakışmasını önlemek için lütfen her fonksiyonunuza benzersiz bir isim atayınız. Örnekteki isimleri olduğu gibi kullanmanız tavsiye edilmez.

Değerlerimizi güncellemek

Değer ekleyip silebildiğimiz ve bu değerleri bir yönetim paneliyle düzenleyeceğimizi anlattığımıza göre şimdi işin gerçek düzenlemesini yapalım. Öncelikle bir fonksiyon daha yazacağız ve bunu tetikleyecek bir düzen sağlayacağız. Tabii ki bomba tetiğinden bahsetmiyorum. Sizin Kaydet butonunuzdan bahsediyorum.

Evet burada kullanacağımız fonksiyonumuz ise update_option. Bu kod ile daha önceden eklemiş olduğumuz bir veriyi güncelleyebiliyoruz. Tabii bunun için birkaç tanımlama ve yönetim alanı formumuzda ufak değişiklikler yapmamız gerekecek. Bunlardan başlayalım.

İkinici yazımızdan formumuzu bir alalım;


<div style="margin-top:10px;">
            <h2>Eklentim Yönetim Sayfası</h2>
                <form method="post" action="">
                    <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>

Bu kodun içerisine bir adet hidden (gizli) bir input bilgisi ekleyelim ve formumuzun içindeki action alanına da istek yapıldığında yönleneceği sayfayı yazalım. Sonrasında da get_option özelliğini kullanarak varsayılan ve sonradan bizim değiştireceğimiz değeri çağıralım. Referans:get_option.

Düzenleme sonrası kodumuz;

<div style="margin-top:10px;">
            <h2>Eklentim Yönetim Sayfası</h2>
                <form method="post" action='<?php echo $_SERVER["REQUEST_URI"]; ?>'>
                    <label for="merhaba">Göstermek İstediğiniz Yazıyı Yazın</label>
                    <input type="text" id="merhaba" name="merhaba" value="<?php echo get_option('eklenti_secenek'); ?>" /><br />
                    <input type="hidden" id="gizli" name="gizli" value="tmm"/><br />
                    <input type="submit" id="submit" name="submit" value="<?php _e('Save Changes'); ?>" />
                </form>
        </div>

Değişiklikleri ışıklandırarak belirttim. Bir adet tmm değerine sahip alan ile action içerisine yönlenecek olduğu sayfayı, yani eklentinin kendi sayfasını ekledim. Şimdi güncelleme fonksiyonumuzu yazalım.

Eklenti yönetim alanı için bir fonksiyon yazmıştık hatırlarsanız. Şimdi bu fonksiyonun içerisine güncelleme betiğimizi gizli olarak eklediğimiz değerimizin gönderilip gönderilmediğini kontrol ederek yazacağız. Buradaki amacımız merhaba id ve ismine (name) sahip olan input girdimizi kullanarak veritabanındaki içeriğimizi değiştirmek. Aşağıdaki kod ile bunu sağlıyoruz. Yazının bitiminde eklentinin son halini ekleyeceğim.

//Değerlerimizi güncelleyelim
	if ($_POST['gizli'] == 'tmm') {
	//Gönderdiğimiz veriyi alalım
		$bizim_verimiz = $_POST['merhaba'];
		update_option('eklenti_secenek', $bizim_verimiz);
?>
	<div class="updated"><p><strong>< ?php _e('Options saved.'); ?></strong></p></div>
	<?php
	}

Burada değerimizi güncellemiş olduk. Bunun yanında bir de güncellendiğine dair bildirim oluşturduk. Referans: update_option

Eklentimizin son hali şöyle 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.');
        }

//Varsayılan Değer Atayalım
register_activation_hook(__FILE__, 'eklenti_varsayilan');
function eklenti_varsayilan( ) {
    add_option('eklenti_secenek', 'Merhaba Dünya!');
}
//Değerleri Silelim
register_deactivation_hook(__FILE__, 'eklenti_kaldirildi');
function eklenti_kaldirildi( ) {
    delete_option('eklenti_secenek');
}
		
/* 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() {
			//Değerlerimizi güncelleyelim
				if ($_POST['gizli'] == 'tmm') {
				//Gönderdiğimiz veriyi alalım
					$bizim_verimiz = $_POST['merhaba'];
					update_option('eklenti_secenek', $bizim_verimiz);
		?>
					<div class="updated"><p><strong>< ?php _e('Options saved.'); ?></strong></p></div>
		<?php
				}
		?>
		<div style="margin-top:10px;">
            <h2>Eklentim Yönetim Sayfası</h2>
                <form method="post" action='<?php echo $_SERVER["REQUEST_URI"]; ?>'>
                    <label for="merhaba">Göstermek İstediğiniz Yazıyı Yazın</label>
                    <input type="text" id="merhaba" name="merhaba" value="<?php echo get_option('eklenti_secenek'); ?>" /><br />
                    <input type="hidden" id="gizli" name="gizli" value="tmm"/><br />
                    <input type="submit" id="submit" name="submit" class="button-primary" value="<?php _e('Save Changes'); ?>" />
                </form>
        </div>

        <?php }
         
/* Fonksiyon yazalım */
function merhaba_dunya()
{
echo "Merhaba Dünya";
}
?>

En sonda bulunan fonksiyonu bilerek bıraktım. Denemeler yaparak siz de bazı düzenlemeler yapabilirsiniz. Gelecek yazımızda bunu otomatik olarak yazı içerisine eklemeyi öğreneceğiz. Elimden geldiğince akıcı ve düzgün bir dille anlatmaya çalıştım. Umarım başarabilmişimdir. Uzun bir yazı oldu ama bu saate kadar yazmama değdi sanırım.

Herhangi soru, düşünce ve öneriniz için yorum alanını kullanabilirsiniz.
İlk Yazı : WordPress için eklenti yazmak…
İkinci Yazı : WordPress için eklenti yazmak…-2
Dördüncü Yazı : WordPress için eklenti yazmak…-4
Selametle

7 thoughts on “WordPress için eklenti yazmak…-3”

  1. Ellerine sağlık hocam. 2 yıl sonra bile bir çok kişinin işine yaradığına emin olabilirsin.

Comments are closed.