04 Temmuz 2007

WordPress için Eklenti Yazalım

WordPress Yorum Ekle

WordPress gerçekten güçlü bir blog (günlük) sistemi. Bunu WP'yi inceledikçe hele de WP için eklenti hazırlamak için yaptığım araştırmalar sonucunda daha iyi anladım. Eklenti hazırlama fikri WP'yi bir okul sitesi olarak kullanabilir miyim sorusu sonucunda ortaya çıktı.
Genelde okullarımız (bunda Bilsa'nın da etkisi büyük) Joomla ya da PHP-Nuke tarzı CMS'ler ile sitelerini hazırlıyor/hazırlatıyorlar. Bunda da en önemli etmenler kuşkusuz, kullanım kolaylığı ve okullara yönelik modüllerin fazlalığı. İşte bu durum, WP için bir dezavantaj oluşturuyor, doğrusu WP kullanım yönünden belki de en kolay sistem ancak okullara yönelik eklenti neredeyse yok. WP ile bir okul sitesi kuracak olsam, elimde en azından personel, mezunlar gibi birkaç eklenti olmasını isterdim. Ancak ne yazık ki bu tarz eklentileri bulamadım. Madem bulamadım, öyleyse neden ben hazırlamayayım diye kendime sormaya başladım ve nasıl eklenti yazabileceğimi araştırmaya başladım.
Henüz bu eklentileri hazırlamaya başlamadım ama öğrendiklerimle eklenti yazabilir hale geldiğimi söyleyebilirim. Kazandığım bilgileri de sizlerle paylaşırsam, tam süper olacak diye düşünüp, kendimce WP için eklenti yazma kılavuzu hazırlamaya karar verdim. Eğer siz de kendin yaz kendin kullan kampanyama katılmak istiyorsanız,
Bir WP eklentisi yazmak düşündüğünüzden çok daha kolaydır. Tabi ki bu kolaylık, yapmayı düşündüğünüz eklenti genişledikçe azalacaktır. Eklenti yazmayı, Yakuter'in yazmış olduğu Rasgele Sözler 2.0 eklentisinden yola çıkıp, Günün İpucu adlı eklentimizi geliştirerek anlatacağım.
Geliştireceğim eklentinin yapacağı iş şu, admin panelden ekleyeceğimiz ipuçlarını, günlüğümüzün belirlediğimiz bir yerinde ya da açılan her yazının sonunda "Günün İpucu" başlığı altında rasgele göstermek. Eklentimizin yönetici panelinden, ipuçlarını ekleme/silme/düzenleme işlemlerini yapabileceğimiz gibi, yazıların sonuna ipucunun eklenip eklenmeyeceğini de belirleyebileceğiz.
Eklentimizi yazmaya başlamadan önce bir eklentinin ne tür bölümlerden oluştuğuna hızlıca bir bakalım.
Bir eklenti tek bir .php dosyasından oluşabileceği gibi, .js, .css, resimler ve yardımcı .php dosyalarından da oluşabilir. Ancak her iki durumda da bir tane ana eklenti dosyasına ihtiyacımız var. Oluşturacağımız eklentinin dosyalarını wp-content/plugin klasörüne kaydetmemiz gerekiyor. Eğer birden fazla dosyadan oluşuyorsa bunlar wp-content/plugin klasörü altında oluşturacağımız bir klasöre de kaydedebiliriz.
Ana eklenti dosyamız aşağıdaki şekilde başlamalıdır.

  • Plugin Name: Eklentinin ismini
  • Plugin URI: Eklentinin web adresi
  • Description: Eklentinin ne yaptığını anlatan bir açıklama
  • Author: Eklentinin yazarı (yani biz)
  • Version: Eklentinin versiyonu (bizimki 1.0)
  • Author URI: Yazarın web sitesi
  • Yazdığımız bu ifade ile WP'nin eklentiler bölümünde eklentimiz aşağıdaki gibi görünecek
    eklentimizin eklentiler bölümündeki görünümü
    Bu ifadelerin ardından eklentimizin iş yapacak kodları gelecektir. Tabi ki ilk kodumuz, eklentimizin kurulumunu yapacak olan fonksiyon olacaktır. Kurulumundan kastımız, eklentimizin varsa kullanacağı veri tablolarının oluşturulması, eklentimiz eğer seçenek kullanacaksa bunların varsayılan değerlerinin oluşturulması ve kullanıcının etkinleştir komutunu verdiğinde yapmasını istediğimiz işlemlerdir.

    Sayfalar: 1 2 3 4 5


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

    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 için Eklenti Yazalım” yazısı için 18 Yorum

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

    1. sozluk dedi ki:

      ise yariyor. tesekkürler.

    2. Emrahca dedi ki:

      Teşekkürler hocam. Bu çok işime yarıyacak. Kendi sitemde yayınlarım yakında wordpres eklentilerimi. Kolay gelsin.

    3. Adem dedi ki:

      Yakup bey iyiy günler

      Ne güzel; bizden de bu konuda arkadaşlarımızın çıkması. Benim için çok önemli bir eklenti var: category visibility. Ama WP'nin son sürümleri için güncelleme yapılmadı. Böyle bir eklentiye ne dersiniz?

      Kolay gelsin!

    4. bahtiyar dedi ki:

      Tam aradığım bir yazı eline sağlık

    5. Yakup Gövler dedi ki:

      Yardımcı olduğuna sevindim.

    6. adonis dedi ki:

      Hocam yazınız için öncelikle teşekkürler çok eğitici olduğu kesin. Benim bir sorum olacak; herhangi bir eklentinin sadece belirli level wordpress kullanıcılarına gösterilebilmesi için bir kod biliyormusunuz? Yani, biraz daha açmak gerekirse örneğin; useronline eklentimiz siteye giriş yapan kullanıcılardan sadece 2.level yada sadece yazar statüsünde olanlar diyeyim tarafından gözüksün; ama 0 level yani, üye statüsünde ki kullanıcılar tarafından görünmesin. Tüm eklentilere bunu uygulayabileceğimiz global bir çözümsel kod biliyorsanız ve bizimle de paylaşırsanız sevinirim. 😀

    7. Yakup Gövler dedi ki:

      Elbetteki bunu sağlayabilirsiniz. Bunun için giriş yapmış olan kullanıcının levelini almanız ve karşılaştırma yaparak eklentiyi görünür ya da görünmez yapabilirsiniz.

      $user_derece = 0;
      if ($user_ID) {
      $user_bilgi = get_userdata($user_ID);
      $user_derece = intval($user_bilgi->user_level);
      }

      Bu kod sonucunda giriş yapmış ziyaretçilerin level'lerini öğrenebilirsiniz. Eğer ziyaretçi üye değilse $user_derece değişkeni 0 değerini alıyor.
      Peki bunu nasıl kullanacaksınız, ister eklentinizin kodlarında add_action fonksiyonu ile eklentinizi kullandığınız koddan önce bunu koyup, $user_derece değişkenini if ile kontrol edersiniz eğer şuysa add_action diye yazarsınız. Ya da temanızda ilgili eklentiyi çağırdığınız koddan önce bunu yazıp, yine karşılaştırma ile görünür ya da görünmez kılabilirsiniz. Ya da yukarıdaki kodu temanızın functions.php dosyasına bir fonksiyon olarak tanımlayıp, istediğiniz yerden çağırarak da yapabilirsiniz. PHP bilginiz varsa bunları kolayca yapabilirsiniz. Mesela bu yazıyı editörlere ve üst yetkililer için aktif hale getirmek için eklentinin sonundaki
      add_filter('the_content', 'ipucunu_yaziya_ekle');
      satırını

      $user_derece = 0;
      if ($user_ID) {
      $user_bilgi = get_userdata($user_ID);
      $user_derece = intval($user_bilgi->user_level);
      }
      if $user_derece > 7) {
      add_filter('the_content', 'ipucunu_yaziya_ekle');
      }

      ile değiştirmek yeterlidir.
      Son olarak belki kullanıcının level'ini almak için başka bir yöntem olabilir ancak şu an için bulabildiğim çözüm bu. Birkaç farklı şey denedim ama yemedi, bu oldu, local'de denenmiştir.
      Leveller şu şekilde
      Adminler - 10
      Editörler - 7
      Yazarlar - 2
      Yardımcı - 1
      Normal üyeler - Yok - 0
      Leveller ile ilgili bilgiye http://codex.wordpress.org/Roles_and_Capabilities adresinden ulaşabilirsiniz.

    8. Mevlut dedi ki:

      anlatığın için eline sağlık hocam php bilgim var ama Wp başlı başına bir şey olduğu için anlamak zor oluyor 🙂
      biraz kodları kurcaladım kendi hazırladığım eklentiler oldu ama bir sorun oluyor yazının altına eklemeye calışıyorum üstüne cıkıyor sorun ne olabilir acaba yardımcı olurmusunuz

    9. umut karaman dedi ki:

      bende aynı sekilde mevlut arkadasın yasadıgı sorunu yasıyorum ne yapmam gerekir

    10. Yakup Gövler dedi ki:

      @mevlut, @umut,
      Eklentilerinizin sonuçlarını yazıların altına eklemek istiyorsanız, yazıda bunun nasıl yapılacağı var. Yazının sonunda verilmiş olan eklenti örneğini indirip, incelerseniz, yazının sonuna nasıl bilgi ekleyeceğinizi görebilirsiniz.
      Ya da yazıya ekleme yaptığınız kodları yazarsanız daha fazla yardımcı olabilirim.
      Eğer siz aşağıdaki gibi bir fonksiyon kullanıyorsanız,
      yaz($content) {
      echo "bla bla bla";
      return $content;
      }
      bu yazının başına yazacaktır. Fonksiyonun içerisini aşağaki gibi değiştirirseniz;
      $content = $content."bla bla bla";
      return $content;
      bu "bla bla bla" ifadesini sonuna ekleyecektir. Buradan yola çıkarak kafanıza göre işlem yapabilirsiniz.

    11. WordPress Action Hooks · Yakup Gövler'in Not Defteri dedi ki:

      [...] eklenti yazarları tarafından kullanılacağını görebiliriz. Sitemde, eklenti yazma ile ilgili yazılar bulunuyor. Ayrıca eklenti yazarları için de bundan sonra bazı önemli kaynakları çevireceğim. [...]

    12. Wordpress eklentisi yazıyoruz: 1- Giriş | Teknoloji Herşeyim dedi ki:

      [...] Eklenti Yazma [...]

    13. Eray USTA dedi ki:

      Hocam Allah razı olsun. Benim için gerçekten önemli bir noktaydı bu ben henüz yeniyim ancak çok istiyodum widget yazmayı bu gece bitirebilirsem inşallah sizinlede paylaşmak yorumunuzu almak isterim. Saygılarımla..

    14. WP’nin add_action() Fonksiyonu · Yakup Gövler'in Not Defteri dedi ki:

      [...] öğrenmeli ve eklentilerinizde kullanmalısınız. Eklenti yazma işine başlamak isterseniz de 'WP için Eklenti Yazalım' başlıklı yazımı okuyabilirsiniz. Ayrıca bileşen yazmak isterseniz de 'WP için Bileşen [...]

    15. ugur eydemir dedi ki:

      yakup bey yazınız yeni buldum ve uygalamaya başlıycam yakında.php görsel eğitim seti aldım ve önce php yi iyi bilmekten geçiyor wordpress eklenti yazmak anladığım kadarıyla bende işe php den başladım.önce php öğrenini tamamlayım inşallah eklenti yazmayada sizlerin makaleleri örnekleri doğrultusunda başlayacağım.inşallah yeni anlatımlar ve örneklerler kısa zamanda yine görüşürüz.ayrıca sizlerin yazılarınızı takip ediyorum bizlere çok şey öğretiyorsunuz
      uğur eydemir

    16. Kullanıcılarınız Yetkilerini Değiştirin · Yakup Gövler'in Not Defteri dedi ki:

      [...] yukarıdakileri bir eklenti haline getirip, kullanmak çok daha esneklik sağlayacaktır. Bunun dışında diyelim ki büyük bir eklenti [...]

    17. Wordpress eklentisi yazıyoruz: 1- Giriş | Webmaster Semtine Hoş Geldiniz! dedi ki:

      [...] Eklenti Yazma [...]

    18. wordpress ziyaretçi sayacı sorunsalı.. | önder'in odası.. dedi ki:

      [...] uyarlamak lazım.. nasıl eklenti yazabilirimi araştırdım ve yakup gövler‘in anlatımını buldum.. gayet güzel bir şekilde anlatmış.. saat 2yi geçiyor ve sabah bayram olduğu için [...]