WORDPRESS'TE PLUGIN NASIL YAZILIR Wordpress'te plugin yazmak için ilk önce hook mantığına sahip olmanız gerekmektedir. WP Hook'un ne olduğunu bilmeyenleri
buraya alalım.
BİLGİ : Wordpress'te eklentiler “wp-content/plugins” altına yazılır. Bu klasör yazının devamında “WP eklenti klasorü” şeklinde anılacaktır. BU KONUDA NELER ÖĞRENECEKSİNİZ - WP Eklenti Oluşturma ve Tanımlama
- Eklenti Admin Sayfası Oluşturma
- Eklenti Yüklendiğinde İşlem Yaptırmak
- WP Eklentilerinde Ajax İşlemleri
- WP Eklentilerinde Shortcode Oluşturma
- WP Post Editörü'ne Buton Ekleme
WP Hook mantığını kavradığınıza göre, şimdi adf.ly eklentisi yazalım. Eklentinin ana mantığı postumuzu yazarken, bir butona basarak yazıya tag ekleyeceğiz. Bu tagta belirtilen adres ise adf.ly adresindeki üyeliğimiz sayesinde kısa bir linke çevrilecek.
Hazırsanız başlayalım.
WP PLUGIN TANIMLAMA Wordpress'te plugin tanımlanırken ilk önce ana bir dosya belirlenir. Genellikle functions.php dosyası kullanılır. Bu dosyanın başına yazacağınız PHP'de yorum kodu olarak geçen bir kaç satırlık kod, hem bizim plugin açıklamamız olacak, hemde WP'nin pluginimizi tanımasını sağlayacaktır.
Wp eklenti klasörü altına bir klasör oluşturalım. Adı da “sd-adfly” olsun. Bu klasör altına functions.php ve index.php dosyalarını da oluşturalım. İndex.php dosyasına herhangi bir şey yazmayacağız.
Functions.php dosyasını açın ve aşağıdaki satırları <?php tagında sonra yapıştırın.
PHP- Kodu:
/*
Plugin Name: sDenizhan Adf.ly Link Kısaltıcı
Plugin URI: http://www.sdenizhan.com
Description: Adf.ly Linkleriniz Üzerinden Para Kazanmanızı Sağlar
Version: 1.0
Author: Süleyman DENİZHAN
Author URI: http://www.sdenizhan.com
*/
Buradaki açıklamaları kendi isteğinize göre değiştirebilirsiniz. Bu dosyayı kaydedip Wordpress Eklentiler sayfasına baktığınızda aşağıdaki ekranla karşılarsanız işler yolunda demektir.
 | Orjinal Boyutunda Açmak İçin ( 909x74 ve %3$sKB ) Buraya Tıklayın |
Fonksiyonları yazarken bize kolaylık sağlaması açısından birkaç sabit değişken tanımlayalım.
PHP- Kodu:
/**************************
* SABİTLER
* ************************/
define(ADFLY_PLUGIN_NAME, 'Skyweboffice Adf.ly Link Kısaltıcı');define(ADFLY_PLUGIN_VERSION, '1.0');define(ADFLY_PLUGIN_DIR, plugin_dir_path(__FILE__));define(ADFLY_PLUGIN_AUTHOR, 'Süleyman DENİZHAN');define(ADFLY_PLUGIN_AUTHOR_WEBSITE, 'http://www.sdenizhan.com');define(ADFLY_PLUGIN_BASE, plugin_basename(__FILE__));define(ADFLY_PLUGIN_URL, plugin_dir_url(__FILE__));
Bu değişkenlerin wp açısından bir önemi yoktur. Ben kodlama açısından kolaylık olması için bunları tanımlıyorum.
Şimdi dikkat ederseniz sabitlerde birkaç fonksiyon kulladım. O zaman bu fonksiyonları tanımak lazım.
plugin_basename(__FILE__) : Bu fonksiyon bize üzerinde çalıştığımız dosyanın klasörünü ve dosya adını verir. Örneğin, sitemizin path'i /home/www/wp-content/plugins/sd-adfly/functions.php ise, bu fonksiyon bize sd-adfly/functions.php şeklinde değer döndürür. Çok fazla kullanmayız ama bilmenizde fayda var.
plugin_dir_path(__FILE__) : Bu fonksiyon plugin klasörünun konumunu döndürür. Örnek : /home/user/var/www/wordpress/wp-content/plugins/my-plugin/ gibi...
plugin_dir_url(__FILE__): Bu fonksiyon, plugin klasörünün url'sini bize döndürür. URL'nin sonunda / ekler.
Devam edelim...
WORDPRESS EKLENTİ YÖNETİM SAYFASI Şimdi sıra eklentimiz için yönetim sayfası yapmaya geldi. Bunun için ilk önce soldaki menülere bir menü eklememiz gerekmektedir. Bunun için aşağıdaki kodları kullanacağız.
PHP- Kodu:
//sd_admin_menus fonksiyonu var mı yok mu diye kontrol ediyoruz.if (!function_exists('sd_admin_menus'))
{
//fonksiyonumuzu yazıyoruz...
function sd_admin_menus()
{
global $page;
$page = add_options_page('Skyweboffice Adf.ly Link Kısaltıcı', 'Adf.ly Ayarları', 10, 'sd-adfly-options', 'sd_adfly_admin');
}
add_action('admin_menu', 'sd_admin_menus');
}
Açıklamlar fonksiyonun içinde yazıyor. Ama biz yinede açıklamasını yapalım.
WP Hooks konusundan öğrendiğimiz
add_action fonksiyonu ile admin_menu kancasına sd_admin_menus fonksiyonunu takıyoruz. Böylece WP admin_menu kancasında sd_admin_menus fonksiyonun çalıştırılacağını öğreniyor.
sd_admin_menus fonksiyonunda ise global $page ile sayfa değişkenine erişiyoruz. add_options_page fonksiyonunun return değerini bu değişkene atayarak sayfamızı eklemiş oluyoruz.
WP'nin admin sayfaları için çeşitli fonksiyonları mevcuttur. Bunları buradaki linkten öğrenebilirsiniz. Şimdi biz add_options_page fonksiyonunu inceleyeceğiz. Zaten birini öğrendiğinizde diğerlerini de hemen kavrayacaksınız. Çünkü kullanım şekilleri aynıdır.
add_options_page : Bu fonksiyon ile WP Ayarlar menüsü altında bir alt menü oluşturuyoruz. Fonksiyonun kullanımı ise şöyle :
add_options_page('Sayfa Title', 'Menü Text', Öncelik, 'benzersiz-bir-kelime-yada-id', 'çalışacak fonksiyon'); Sayta Title : Sayfanın Title Bilgisi
Menü Text : Alt menün yazısı
Öncelik : Bu değer 1 ile 10 arasında bir integer değeri alır. Genellikle 10 yazılır.
Benzersiz-bir-kelime-yada-id : Bu kısım önemlidir. Buraya benzersiz bir kelime grubu girmelisiniz. Aksi takdirde sayfanız çalışmaz. Boşluklara – (tire) koymayı unutmayın...!
çalışacak fonksiyon : Menüye tıklandığında çalışacak fonksiyonu belirtiyoruz.
Buraya kadar herşey tamamsa şimdi admin sayfamızı yazalım. Ben bootstrap kullanarak yazdığım admin panelin kodlarını paylaşıyorum. Yazının sonunda ise hem bu dosyaları, hem de anlatım dosyalarını paylaşacağım. Gerekirse ordan kontrol edebilirsiniz.
Yönetici sayfamız için gerekli fonksiyonun adını sd_adfly_admin olarak belirlemiştik. Bu sayfa bir form oluşturup, adf.ly apisi için gerekli olan User ID ( UID ), Key ( Kullanıcı Anahtar Değeri ) ve Kısaltma Domaini değerlerini kaydettirmeyi planlıyoruz.
Fonksiyonumuz şu şekilde :
PHP- Kodu:
if (!function_exists('sd_adfly_admin'))
{
function sd_adfly_admin()
{
?>
<div class="page-header">
<h3><?php echo ADFLY_PLUGIN_NAME; ?> Ayarları</h3>
</div>
<div id="result" class="result"></div>
<form method="post" action="kaydet.php" role="form" class="form-horizontal adfly_ayar_form">
<div class="form-group">
<label class="col-sm-2">Adf.ly Kullanıcı UID Değeri:</label>
<div class="col-lg-6">
<input type="text" name="adfly_uid" id="adfly_uid" value="<?php echo get_option('sd_adfly_uid'); ?>" class="form-control">
<span class="help-block"> adf.ly tarafında size verilen UID değerini girmelisiniz. </span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2">Adf.ly Kullanıcı Anahtar Değeri:</label>
<div class="col-lg-6">
<input type="text" name="adfly_key" id="adfly_key" value="<?php echo get_option('sd_adfly_key'); ?>" class="form-control">
<span class="help-block"> adf.ly tarafında size verilen KEY değerini girmelisiniz. </span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2">Kısaltma İçin Kullanılacak Domain:</label>
<div class="col-lg-6">
<select name="adfly_domain" id="adfly_domain" class="form-control">
<option value="adf.ly" <?php echo get_option('sd_adfly_domain') == 'adf.ly' ? 'selected="selected"' : ''; ?>>adf.ly</option>
<option value="q.gs" <?php echo get_option('sd_adfly_domain') == 'q.gs' ? 'selected="selected"' : ''; ?>>q.gs</option>
</select>
<span class="help-block"> adf.ly size kısaltma için alternatif domainler sunar. </span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2"></label>
<div class="col-lg-6">
<input type="submit" name="Ayar Kaydet" value="Ayarları Kaydet" class="btn btn-success">
<img src="<?php echo ADFLY_PLUGIN_URL; ?>http://www.fuub.net/images/wpspin.gif" class="loading_icon hide" height="16" width="16" border="0" />
</div>
</div>
</form>
<div class="col-lg-12">
<div class="page-header">
<h3>Bu Bilgileri Nasıl Elde Ederim ?</h3>
</div>
<p>
Adf.ly sitesine kendi kullanıcı adı ve şifreniz ile giriş yaptıktan sonra <i>Tools</i> menüsü altındaki <i>API Documentation</i> menüsüne tıklayın.
<br>
Sayfa açıldığında sağ tarafta
<br>
<pre>http://api.adf.ly/api.php?key=<b>dd628995bd9717ed88278a7979406852</b>&uid=<b>1041595</b>&advert_type=int&domain=adf.ly&url=http://somewebsite.com</pre>
şeklinde bir link göreceksiniz. Bize lazım olan değerler, key ve uid kelimelerinin karşısında yazıyor.
</p>
</div>
<div class="col-lg-12">
<div class="page-header">
<h3>Nasıl Kullanırım ?</h3>
</div>
<p>
Adf.ly ayarlarını girip kayıt ettikten sonra yazınıza aşağıdaki kodu eklemeniz yeterli olacaktır.<br>
<pre>[sd_adfly url="http://www.google.com"][/sd_adfly]</pre>
<br>
Ayrıca editöre bu işlemi için bir buton eklenmiştir. Bu butonu kullanarakta eklentiyi kullanabilirsiniz.
</p>
<div class="page-header">
<h3>Örnek Kullanımlar</h3>
</div>
<p>
[sd_adfly url="http://www.google.com"][/sd_adfly]<br>
[sd_adfly url="http://www.google.com" title="Google.Com" target="_blank" class="link"][/sd_adfly]<br>
[sd_adfly url="http://www.google.com" title="Google.Com" target="_blank" class="link"]Buraya Tıklayın[/sd_adfly]<br>
</p>
</div>
<?php
}
}
BİLGİ : Bu sayfada dikkat ederseniz get_option diye bir fonksiyon göreceksiniz. Bu WP'nin ayarlarına erişmek için kullanılan bir fonksiyondur. Diğer fonksiyonlar ise, add_option : WP'ye ayar eklemeyi sağlar.
update_option : Ayarı güncellemeyi sağlar.
Sonraki konuda ve yazının genelinde bu fonksiyonların kullanımını göreceksiniz.
WORDPRESS EKLENTISI YÜKLENDIĞINDE IŞLEM YAPTIRMAK Gördüğünüz gibi admin sayfasında kullanıcıdan birkaç bilgi istedik. Bu bilgileri wp'nin db'sinde saklayacağız. Fakat bu saklanacak alanları ayarlamamız gerekiyor değil mi

Bu durumda eklenti etkinleştiğinde wp db'sine gerekli ayar alanlarını ekleyelim.
PHP- Kodu:
if (!function_exists('sd_adfly_init'))
{
function sd_adfly_init()
{
add_option('sd_adfly_uid', '');
add_option('sd_adfly_key', '');
add_option('sd_adfly_domain', '');
}
add_action('init', 'sd_adfly_init');
}
Bu fonksiyonda add_option ile db'ye gerekli ayarları ekliyoruz. Böylece kullanıcının gireceği ayarları db' de saklamaya olanak sağlayacağız. Bunu yaparken wordpress'in add_option fonksiyonundan yararlanıyoruz. Bu fonksiyon,
add_option('ayar_alanı', 'ayar_değeri') şeklinde kullanılır. Datada ayar_alanı adında bir yer açar ve ayar_değeri'ni oraya kaydeder.
Fonksiyondan sonra, sd_adfly_init fonksiyonunu wordpress'in init kancasına add_action ile takıyoruz. Böylece eklenti aktifleştiği zaman bu fonksiyonun çalışmasını sağlıyoruz. Burdan anlayacağınız gibi
init kancası, eklenti aktifleştiği zaman yapılacakların kancasıdır.
WP EKLENTİLERİNDE AJAX KULLANMAK Günümüz web teknolojilerinin başında ajax gelir. Kısaca ajax ile sayfanın tamamı değil sadece belli bir bölümü ile ilgili işlemler yaptırılarak, kullanıcıya gereksiz işkence çektirilmez. Bu eklenti de ajax kullanmamızın amacı
“Wordpress Eklentilerinde Ajax Nasıl Kullanılır?” sorusunu yanıtlamaktır. Ayrıca ufak bir güzelliği de yok değil yani
Wordpress'te ajax kullanırken mantık şöyle işliyor :
1- javascript kısmında post edilecek url kısmına
ajaxurl yazılacak.
2- post edilecek değerlere ek olarak
action : 'anahtar_deger' eklenecek. Bu kısım biraz kafa karıştırıcı olabiliyor. Bu yüzden şöyle kullanmanız sizin için daha faydalı olur.
Jquery ile ajax işlemlerinde $.post() kullanıyoruz. Bunu wp'ye göre geliştirirsek,
Kod:
$.post(ajaxurl, { data : $('#formid').serialize(), action : 'anahtar_bir_deger' }, function(){}); Bu şekilde kullanırsak, data değişkeninde formun verilerini tutabiliriz.
Peki action 'i neden tanımladık ? Worpdress ajax işlemleri için kullandığı hook'un adı şu şekildedir :
wp_ajax_{bu_kısım_javascripteki_action_kismi} Yani yukarıda action için 'anahtar_bir_deger' tanımladık ve wp hook'u şöyle oldu :
wp_ajax_anahtar_bir_deger Eğer kafanız karıştıysa hemen örneğe geçelim.
Ajax kullanabilmek için ilk önce adfly.
js dosyası oluşturalım. Ben konum olarak bootstrap/
js altına oluşturuyorum. Bu
js dosyasında jQuery'nin nimetlerinde yararlanacağız.
BİLGİ : Wordpress Ajax işlemlerinde, işlem başarılı olduysa '0' (sıfır) değeri return eder. Dikkat etmeniz gereken şey, işlemin başarılı olması demek, bir dosyaya veri gönderilip, o dosyadan olumlu/olumsuz verinin geri alınması demektir. Adfly.js içeriği : HTML-Kodu:
jQuery(document).ready(function($){
$('form.adfly_ayar_form').submit(function(event){
event.preventDefault();
var form = $(this);
var adfly_uid, adfly_key, adfly_domain;
adfly_domain = $('#adfly_domain').val();
adfly_key = $('#adfly_key').val();
adfly_uid = $('#adfly_uid').val();
if (adfly_key == '')
{
$('#adfly_key').parent().parent().addClass('has-error');
alert('Adf.ly Kullanıcı Anahtar Değerini Girmelisiniz..!');
return;
}
if (adfly_uid == '')
{
$('#adfly_uid').parent().parent().addClass('has-error');
alert('Adf.ly UID Değerini Girmelisiniz..!');
return;
}
//Yükleniyor ...
var submitButton = form.find('input[type=submit]');
submitButton.val('Ayarlar Güncelleniyor..').attr('disabled', 'disabled');
//loading icon gösteriliyor...
form.parent().find('img.loading_icon').removeClass('hide').show();
//post url olarak ajaxurl giriyoruz...
// action : 'anahtar_kelime' tanımlıyoruz...
$.post([B][U]ajaxurl[/U][/B], { data : form.serialize(), [B][U]action : 'sd_adfly_ayar_kaydet'[/U][/B]}, function(results){
//işlem başarılı ise
if (results != '0')
{
//loading icon gösteriliyor...
form.parent().find('img.loading_icon').addClass('hide').hide();
submitButton.val('Ayarları Güncelle').css({'color' : 'white'}).removeAttr('disabled');
form.parent().find('div.result').addClass('alert alert-success').html('Ayarlar Güncellendi..!');
}
else
{
//loading icon gösteriliyor...
form.parent().find('img.loading_icon').addClass('hide').hide();
submitButton.val('Ayarları Güncelle').removeAttr('disabled');
form.parent().find('div.result').addClass('alert alert-danger').html(results);
}
});
});
}); Burada dikkat etmeniz gereken nokta, $.post için yapılan ayarlardır. Ajax için gerekli url yerine
ajaxurl giriyoruz. Böylece wp bizim için gerekli olan url'yi ayarlamış oluyor.
İkinci nokta ise gönderilen bilgiler kısmındadır. Buradaki action değeri bizim için önemli bir değerdir bu yüzden buradaki değeri aklınızda tutun. İleride kullanacağız.
Ajax için gerekli
js dosyamızı hazırladıktan sonra bunu wp'ye eklememiz gerekiyor. Bu işlem içinde wp'nin
admin_enqueue_scripts kancasını kullanacağız. Bu kanca sayesinde bu
js dosyası sadece admin panelinde çalışacaktır.
PHP- Kodu:
if (!function_exists('sd_adfly_scripts'))
{
function sd_adfly_scripts($hook)
{
global $page;
//sadece bizim eklenti sayfamızda çalışmasını sağlıyoruz.
if ($page != $hook)
return;
wp_enqueue_style('sd-adfly', ADFLY_PLUGIN_URL.'bootstrap/style/style.css');
wp_enqueue_style('sd-adfly-bt', ADFLY_PLUGIN_URL.'bootstrap/style/css/bootstrap.min.css');
wp_enqueue_script('sd-adfly-js', ADFLY_PLUGIN_URL.'bootstrap/js/adfly.js', array('jquery'));
}
add_action('admin_enqueue_scripts', 'sd_adfly_scripts');
} wp_enqueue_style fonksiyonu ile css dosyalarımızı, wp_enqueue_script ile de
js dosyalarımızı ekliyoruz. Her iki fonksiyonda ilk önce benzersiz bir kelime grubu yani id alıyor. Daha sonra eklenecek css yada
js dosyalarının url'sini belirtiyoruz. Bunu yaparken başta eklediğim sabitlerden yararlandım.
Js dosyaları için üçüncü bir argüman, ilgi
js'nin kütüphanesinin belirtilmesidir. Biz jquery kullandığımız için jquery değeri içeren bir array gösterdik.
Şimdi bu alınan verilerin kaydedileceği kısma geldik. Burada ajax ile gelen veri grubunu dbye yazdıracağız. Bu kısmı adım adım anlatacağım ki ajax mantığı otursun.
1-İlk önce bir fonksiyon tanımlayalım :
PHP- Kodu:
if (! function_exists('sd_adfyl_ayarlari_kaydet'))
{
function sd_adfyl_ayarlari_kaydet()
{
}
}
2 –
ÖNEMLİ NOKTA : Şimdi bu fonksiyonun çalışacağı hook'a yani wp_ajax hook'una bu fonksiyonu ekliyorum. Burada önemli olan nokta, hook tanımlarken,
js kodlarındaki action kısmını wp_ajax_action_kismi şeklinde yazmak. Javascript kodlarında action kismini sd_adfly_ayar_kaydet şeklinde tanımladım. O zaman hook'un adı wp_ajax_sd_adfly_ayar_kaydet oldu. Şimdi aşağıdaki koddaki add_action kısmına dikkat edin. Birinci kısım yeni oluşan hook'un adı, ikinci kısım ise fonksiyonumuzun adı.
PHP- Kodu:
if (! function_exists('sd_adfyl_ayarlari_kaydet'))
{
function sd_adfyl_ayarlari_kaydet()
{
}
[B]add_action('wp_ajax_sd_adfly_ayar_kaydet', 'sd_adfyl_ayarlari_kaydet');[/B]
}
3- Şimdi de fonksiyonun içeriğini yazalım.
PHP- Kodu:
if (! function_exists('sd_adfyl_ayarlari_kaydet'))
{
function sd_adfyl_ayarlari_kaydet()
{
$data = $_POST['data'];
parse_str($data, $post);
$post = (object) $post;
if (empty($post->adfly_key) || empty($post->adfly_uid))
{
die('Tüm Forumu Doldurmalısınız..!');
}
else
{
$msg = '';
if (!update_option('sd_adfly_uid', $post->adfly_uid))
{
$msg .= 'Adf.ly UID Bilgisi Güncellenemedi.';
}
else
{
$msg .= 'Adf.ly UID Bilgisi Güncellendi.';
}
if (!update_option('sd_adfly_key', $post->adfly_key))
{
$msg .= 'Adf.ly KEY Bilgisi Güncellenemedi.';
}
else
{
$msg .= 'Adf.ly KEY Bilgisi Güncellendi.';
}
if (!update_option('sd_adfly_domain', $post->adfly_domain))
{
$msg .= 'Adf.ly DOMAIN Bilgisi Güncellenemedi.';
}
else
{
$msg .= 'Adf.ly DOMAIN Bilgisi Güncellendi.';
}
die($msg);
}
die();
}
add_action('wp_ajax_sd_adfly_ayar_kaydet', 'sd_adfyl_ayarlari_kaydet');
}
Bu kısımda $_POST['data'] ile gelen form verilerini aldıktan sonra parse_str ile $post değişkenine aktardım. Kolaylık olması açısından $post'u object yaptım. Eğer gerekli veriler boş ise die() kullanarak işlemi sonlandırdım. Veriler boş değilse, update_option ile güncellemelerini yaptırdım ve durumlarını $msg değişkenine aktardım. En son yine die($msg) kullanarak işlem sonuçlarını ekrana yazdırdım.
Wordpress'te Ajax İşlemi bu şekilde yapılmaktadır. Eğer sistem karışık geldiyse, takıldığınız bir nokta varsa memnuniyetle cevaplayabilirim.
WORDPRESS EKLENTILERINDE SHORTCODE OLUŞTURMA Wp'nin en güzel yanından biri de shortcode taglarıdır. Forumlarda vs. çok kullanılan, [img] gibi tagları istersek pluginlerimizde kendimizde tanımlayabiliriz.
Eklentimiz asıl işini bu kısım yapacaktır. WP postlarımız içinde tanımlayacağımız kodu görünce, buradaki fonksiyonu çalıştıracaktır. Bu yüzden adf.ly apisine de burada bağlanacağız.
Hemen işlemlerimize devam edelim ve fonksiyonumuzu yazalım.
PHP- Kodu:
if (!function_exists('sd_adfly_shortcode'))
{
function sd_adfly_shortcode($atts, $content)
{
//gelen değerleri parçalıyoruz...
extract(shortcode_atts(array(
'url' => 'http://www.sdenizhan.com',
'title' => '',
'target' => '_self',
'class' => ''
), $atts ));
//gerekli bilgileri alalım
$adfly_key = get_option('sd_adfly_key');
$adfly_uid = get_option('sd_adfly_uid');
$adfly_domain = get_option('sd_adfly_domain');
//html için değişken
$output = '<a ';
//adf.ly apisinden kısaltılmış linkini alalım
$adfly_link = file_get_contents('http://api.adf.ly/api.php?key='. $adfly_key .'&uid='. $adfly_uid .'&advert_type=int&domain='. $adfly_domain .'&url='. $url);
//link geldiyse
if ($adfly_link)
{
$output .= ' href="'. $adfly_link .'" title="'. $title .'" target="'. $target .'" class="'. $class .'"';
if (! empty($content))
{
$output .= '>'. $content .'</a>';
}
else
{
$output .= '>'. $url .'</a>';
}
return $output;
}
//link gelmediyse orjinal linki return edelim
else
{
return '<a href="'. $url .'" title="'. $title .'" target="'. $target .'" class="'. $class .'">'. $url .'</a>';
}
}
add_shortcode('sd_adfly', 'sd_adfly_shortcode');
}
Burayı anlatmak gerekirse,
add_shortcode('shortcode_tagı', 'tag_icin_fonksiyon') fonksiyonuna, shortcode tagını ve bu tagın karşılında çalıştıracağı fonksiyonu tanımladık.
Tanımladığımız fonksiyon $atts ve $content şeklinde iki değişken alır. $atts değişkeni shortcode'nin parametlerini taşır. $content ise, shortcode'nin içeriğidir. Yani shortcode'miz
Kod:
[sd_adfly url='' title='' class='' target='']Buraya Tıkla[/sd_adfly]
şeklinde ise,
$atts değişkeni, url, title, class, target değerlerini taşırken, $content ise “Buraya Tıkla” değerine sahiptir. Fonksiyonumuz extract ile bu değikenleri ayarlamaktadır. shortcode_atts ile de değişkenlerin default değerlerini belirtiyoruz. Daha sonra db'den gerekli ayarları elde edip adf.ly apisine gönderiyoruz. Apiden link geldiyse, html tagına göre bağlayıp return ediyoruz, eğer apiden link gelmediyse, Orijinal linki return ediyoruz.
SHORTCODE IÇIN EDITOR BUTONU EKLEYELIM Eklentimizin son kısmına geldik. Bu kadar iş yaptık, herşeyimiz hazır. Fakat kullanıcılarımızdan her seferinde
Kod:
[sd_adfly url='' title='' class='' target='']Buraya Tıkla[/sd_adfly]
şeklinde bir kodu yazmasını bekleyemeyiz. Bu yüzden editöre bir button eklememiz gerekiyor. Bu butona
Quicktags deniliyor. Fonksiyonumuz şu şekilde :
PHP- Kodu:
if (! function_exists('sd_adfly_add_quicktags') )
{
function sd_adfly_add_quicktags() {
?>
<script type="text/javascript">
//QTags.addButton( benzersiz_id, gorunecek_isim, kod_1, kod_2, erişim_tuşu, mouse_uzerinde_durdugunda_, priority );
QTags.addButton( 'eg_adfly', 'Adf.ly Link Converter', '[sd_adfly url="" title="" class=""]Buraya Tıklayın[/sd_adfly]', '', 'c', 'Adf.ly Link Converter', 111 );
</script>
<?php
}
add_action( 'admin_print_footer_scripts', 'sd_adfly_add_quicktags' );
}
Yazdığımız fonksiyonu admin_print_footer_scripts kancasına takıyoruz. Fonksiyon basit bir javascript kodu şeklindedir.
Ve eklentimizi bitirmiş bulunmaktayız. Hayırlı uğurlu olsun.
Eğer aklınıza takılan bir şey varsa sorabilirsiniz. Eklentinin hazır şekli ve dökümanı ektedir. İndirip kodları incelemenizde fayda vardır.