15 Haziran 2007

Wordpress Eklentisi Yazalım

WordPress Yorum Ekle

Uzun süredir WordPress için eklenti yazma konusunu araştırıp duruyordum. Oldukça ilerleme kaydettiğimi söylemeliyim. Bu konuda yakuter giriş seviyesinde bir yazı yazmıştı.

İşin kötü tarafı bu konuda bu yazının dışında yeterli Türkçe kaynak da bulamamamdı. İş yine yabancı sitelere kalmıştı. WordPress'in resmi sitesi WordPress.org'da bu konuda oldukça fazla kaynak olmasına rağmen örnek eksiklikleri ve formal bir dil kullanılması nedeniyle konuyu kavramak oldukça zor geldi. Ancak buradaki harici kaynak yazılar işi daha iyi anlatmışlardı.

Bunlardan biri de Bruno Goncalves'in Writting Your First WordPress Plugin başlıklı yazısı olup, bu yazımda onun yazısının, farklı bir örnek üzerinden çevirisini bulacaksınız. Bundan sonraki yazılarımda da "WP için eklenti yazma konusuna" devam edeceğim.

Bir WordPress Eklentisi Yazmak

WordPress, içerik oluşturma ve yönetmek için birçok kişinin kullandığı ve kolayca özelleştirilebilen bir platformdur. Bu yazıda basit bir WP (WordPress) eklentisini yazmak için gerekli adımları ve temel eklenti yapısını anlatacağım. Eklentimiz; yazılan yazıların herhangi bir yerine yönetim panelinden belirlediğiniz imzanızı eklemenizi sağlıyor. Yaptığı iş çok basit ancak kullanılan yöntemler birçok eklentinin temelini oluşturacak yeterliliktedir.

Birinci adım, WP'nin eklentinizi yönetim panelindeki Eklentiler bölümündeki listede yer alacak bilgilerin bulunduğu eklenti başlığını tanımlamaktır.

  1. <?php
  2. /*
  3. Plugin Name: İmza
  4. Plugin URI: http://www.yakupgovler.com
  5. Description: İstediğiniz yere imza ekler
  6. Version: 1.0
  7. Author: Yakup Gövler
  8. Author URI: http://www.yakupgovler.com/
  9. */
  10. &#91;/php]
  11. <p>Burada, eklenti ismini, eklentinin web sitesini, ne iş yaptığını anlatan bir açıklama, sürümünü, yazarını ve yazarın web sitesini tanımlamış olduk. Bu kodların sonunda yönetim panelinde eklentiler bölümünde eklentimiz aşağıdaki gibi görünecek.</p>
  12. <a href='http://www.yakupgovler.com/tr/wp-content/dosyalar/2007/06/imza31.jpg' title='Eklentinin yönetim paneli görüntüsü'><img src='http://www.yakupgovler.com/tr/wp-content/dosyalar/2007/06/imza31.kucukresim.jpg' alt='Eklentinin yönetim paneli görüntüsü' /></a>
  13. <p>WP içeriği kullanıcıya görüntülemeden önce bir takım filtrelerden geçirir. Birçok eklenti WP'ye fonksiyonlarını çalıştırmak için filtreler uygularlar. Bu bir satırlık bir kod ile yapılır:</p>
  14. [php num=10]
  15. add_filter('the_content','imza_Filtre',1);

Bu kod WP'ye "the_content" filtresini (hook/kanca) "imza_Filtre" fonksiyonuna yönlendirmesini söyler. Koddaki "1" WP'ye bu eklentinin diğer eklentilerden önce çalışmasını sağlayacak bir öncelik vermesini belirtir. Burada add_filter fonksiyonu gibi add_action fonksiyonu da kullanılabilir. WP ile kullanabileceğiniz hazır fonksiyonlar için ise buraya tıklayabilirsiniz.

Bu basit örnekte, "imza_Filter" fonksiyonu içeriğin içerisindeki "<!--imza-->" taglerini, başka bir fonksiyondan alınan imza ile değiştirilip, yeni içeriği oluşturacaktır. Böylece tagler faydalı html kodlarıyla değiştirilmiş olacaktır. Filtrelenmiş içerik WP'ye geri dönecek ve yayınlanacaktır. Tagleri değiştirecek olan "imza_Filter" ve "imza_al" fonksiyonları en sade halleriyle:

  1. function imza_Filtre($content)
  2. {
  3.     $yeni_icerik = $content;
  4.     $sonuc_imza = imza_al();
  5.     $yeni_icerik = str_replace('<!--imza-->',$sonuc_imza, $yeni_icerik);
  6.     return $yeni_icerik;
  7. }
  8.  
  9. function imza_al()
  10. {
  11.       $imza= get_option('imzam');
  12.     return $imza;
  13. }

şeklinde yazılabilir. Elbette ki bu fonksiyon eşleştirme işlemlerinin performansını artıracak Regular Expressions'lar kullanılarak, daha fonksiyonel (ve kompleks) hale getirilebilir.

"imza_al" fonksiyonu en önemli fonksiyon olup, bu fonksiyon içerisinde <!--imza--> ifadesiyle yer değiştirecek olan içerik oluşturulur. Bu içerik bizim örneğimizde olduğu gibi basit bir seçenek bilgisi olabileceği gibi bir veritabanı sorgusunun sonucu da olabilir.

Sayfalar: 1 2 3


Bu yazının kısa bağlantısı http://www.yakupgovler.com/?p=59.

Yazılarımı RSS aboneliği ile takip edebilir, yeni yazılarıma kolaylıkla ulaşabilirsiniz. Bunun için ise RSS adresimi kullanabilirsiniz.


“WordPress Eklentisi Yazalım” yazısı için 5 Yorum

Bu yazıya yapılan yorumları dilerseniz, ( RSS 2.0 ) beslemesini kullanarak takibe alabilirsiniz.

  1. ersin dedi ki:

    Hocam mrb. Yazınızı okudum ancak fazla bilgi sahibi olmadığım için içinden çıkamadım. Siz güzel anlatmışınız ben anlayamadım. Sizden bir ricam var mümkünse. Bana bir eklenti lazım. WordPress blogları için otomatik yazı eklentisi. Yani http://www.webiket.net deki gibi.http://www.webiket.net/webiket-wordpress-araclari.php

  2. Yakup Gövler dedi ki:

    Oradaki eklentiyi inceledim. Ancak eklentide esas işi yapan kısım, sitede yer alan parçası. Onu görmeden birşey söylemek pek mümkün değil. Ayrıca localhost'ta deneme imkanı vermediğinden ne tür bir etkisi olduğunu göremedim.
    Eklentinin çalışma sistemi ise şöyle; kullanıcı bir yazı yazıp, yayımla dediğinde, site üzerinde bulunan bir form iframe içerisinde açılıyor ve kullanıcı webiket kullanıcı adı ve şifresi ile giriş yapıyor, aynı zamanda yazının Başlığı ve URL'si de bu forma gönderiliyor. Sanırım bundan sonrasında gerekli açıklama, etiket vs. girildikten sonra iframe içerisinde gönder dediğinizde yazı webiket'e eklenmiş oluyor.
    Son olarak, site eklentinin kodlarının kullanılmasına izin vermemiş, tasdix.com'dan da tasdiklemişler.

  3. Oğuzhan AYDIN dedi ki:

    Selamun aleyküm
    Benim http://www.kaykay.org isminde bir sitem var ve burda yazdığım yazılar üste çıkıyor eski yazdıklarımsa aşağı iniyor fakat ben tam aksinin olmasını istiyorum yeni yazdıklarım aşağıda kalsın istiorum bunun için yazıların kaçıncı sırada olabileceklerini hesaplayan bir eklenti yazabilirmisiniz? Teşekkürler Kolay GELSİN...

  4. Yiğit Özdamar dedi ki:

    Merhaba Yakup,
    Güzel bir konu anlatımı olmuş. Tebrik ederim.
    @Oğuzhan,
    Sen olayı cözene kadar siten uçmuş anladığım kadarıyla...

  5. WordPress için Eklenti Yazalım · Yakup Gövler - WordPress'e dair ne varsa dedi ki:

    [...] Resimli Bağlantılar: Tamamlandı [...]