WordPress eklentisi yazıyoruz: 1- Giriş

Eyl 22

Öncelikle şunu belirteyim: bu bir yazı dizisi olacak arkadaşlar. Yani tek bir yazıdan değil bir çok yazıdan oluşacak bir seri planlıyorum. Bu yazılarda adım adım nasıl WordPress eklentisi geliştirebileceğimizi anlatmaya çalışacağım sizlere.

Türkiye’de WordPress eklentisi geliştiren çok fazla kişi yok ve doğal olarak bu konuda yeterli Türkçe kaynak ve bol örnek de yok ne yazık ki. Umarım bu yazı dizisi ile, WordPress’e nasıl eklenti yazılacağını adım adım öğreneceğiz. Serinin bir diğer özelliği de videolar ile desteklenecek olması. Yıllardır programcılıkla uğraşıyorum ve tecrübeme dayanarak söylüyorum ki programcılığı öğrenmenin en etkili yolu görsel olarak öğrenmektir. Birisi bir konuyu sesli ve görüntülü olarak anlattığında olayı kavramak daha kolay oluyor haliyle. Bu konuda şu an Web Deneyimleri‘nin sahibi Volkan Görgülü çok başarılı bir iş yapıyor ve bildiklerini görsel olarak okuyucularıyla paylaşıyor. Ayrıca WordPress’e eklenti yazmak ile ilgili aşağıdaki Türkçe kaynaklar da işinize yarayabilir.

Yakup Gövler‘in eklenti geliştirmekle ilgili yazıları

Yakuter‘in eklenti geliştirmekle ilgili yazıları

Veli Akçakaya

Öncelikle bu giriş yazısında WordPress eklentilerinin genel yapısından biraz bahsetmek istiyorum sizlere. Unutmadan; bu yazı biraz uzun ve teorik bilgiler içereceğinden biraz sıkıcı olabilir ancak sonuna kadar okumanız, eklenti geliştirmek için kafanızda bir şeyler parlamasına ve videoyu daha net kavramanıza neden olacaktır. Göreceksiniz ki WordPress Eklentisi geliştirmek çocuk oyuncağı.

WordPress Eklentileri ne iş yapar, nasıl çalışır?

WordPress, öyle bir içerik yönetim sistemi ki, onu geliştirenler dışarıdan her türlü müdaheleye izin verecek şekilde tasarlamış. Bir WordPress eklentisi, sistemdeki her noktaya temas edebilir ve her noktayı kontrol altında tutabilir. Örnek vermek gerekirse bir WordPress eklentisi ile, herhangi bir yorumu onayladığınız ana, bir yazının başlığına tıkladığınız ana, yayınla butonuna bastığınız ana, herhangi bir şeyi silmek istediğiniz ana, yeni kategori eklediğiniz ana, her vurduğunuz karaktere ve aklınıza gelebilecek daha bir sürü olaya müdahale etmeniz mümkün. Bu şekilde anlattığımda pek bir şey ifade etmeyebilir ancak videoyu izlediğinizde bu durumu net bir şekilde kavrayacağınızı düşünüyorum.

Peki bu olaylara nasıl müdahale edeceğiz? Başlangıçta zor gibi görünüyor ancak temel yapı taşlarını öğrendiğinizde bu işin php kodlamaktan öte bir şey olmadığını göreceksiniz. Elbette WordPress’in, eklenti geliştirmek için gerekli fonksiyonlarını bir anda öğrenmek mümkün değil, sürekli araştırarak ve bol bol örnek irdeleyerek bu konuda uzmanlaşabilirsiniz. Kendim de halen öğreniyorum (:

Bir WordPress eklentisini kimler yazabilir?

Bir WordPress eklentisi yazabilmek için alim olmaya gerek yok. Orta düzeyde, php ve css bilmek bu iş için yeterli. Üzerinde önemle durmanız gereken birinci nokta PHP’nin fonksiyon yapısıdır. Bu nedenle PHP de fonksiyon geliştirme üzerine araştırmalar yapmanızı tavsiye ediyorum. Bir WordPress eklentisi tamamen fonksiyonlar üzerine kuruludur, bu nedenle fonksiyonların yapısını anlamak çok önemli. İşin CSS kısmı ise, yazacağınız WordPress eklentilerini şekillendirmek için gerekli. Özellikle eklentinize özel Admin panelleri yaparken CSS den oldukça fazla yararlanacağız. CSS konusunda da WordPress’in geliştiricilerine sunduğu standart kalıplar var. Bu nedenle hiç zorlanmayacağınızı garanti ediyorum.

Eklenti yazabilmek için alet çantanızda neler olmalı?

Bir eklenti yazabilmek için bir takım araçlara sahip olmanız gerekiyor. Bu araçlar günlük hayatta kullandığımız ve hepimizin bildiği araçlar. Hatta bu iş için sadece Notepad bile yeterli ama ben Notepad++ öneriyorum. (:

Notepad++ (Gelişmiş işaretleme özelliği ile php programcılığını oldukça kolaylaştırıyor)

Firebug (CSS ile işiniz varsa mutlaka bu Firefox eklentisini kurun. Bu eklenti sayesinde istediğiniz bir web sayfasında gerçek zamanlı css düzenlemeleri yapabilir, bir sayfanın css kodlarına ulaşıp ilham alabilirsiniz.)

XAMPP (Local bir WordPress kurulumu yapabilmeniz için öncelikle bilgisayarınıza bir web server, Php ve Mysql kurmalısınız. XAMPP bu işi sizin için otomatiğe bağlıyor. Tek tık ile bilgisayarınızı tam teşekküllü bir web sunucusuna dönüştürebilirsiniz)

Örnek Çalışmalar

Az önce bahsettiğim gibi Türkiye’de WordPress eklentisi geliştirmek hakkında ne yeterli Türkçe kaynak ne de örnekler mevcut. Bu nedenle sizlere vereceğim bilgiler arasında bol bol örnek çalışmaya yer vereceğim.

Serinin adımları kaç günde bir yayınlanacak?

Bu konuda net birşey söylemem mümkün değil arkadaşlar, tamamen yoğunluğuma bağlı olarak bazen her gün bazen haftada bir paylaşımda bulunabilirim. Eğer serinin adımlarını kaçırmak istemiyorsanız RSS ile yazılarımı takip edebilirsiniz.

WordPress Eklentisi Yazıyoruz

WordPress eklentisi yazmanın ilk bölümü tanımlama kısmıdır. Yazdığımız eklentiyi standart php nin ötesine götürebilmek ve WordPress’in eklentimizi tanımasını sağlamak için bir takım tanımlama kodları yazmamız gerekiyor. Aşağıdaki örneği inceleyin:

[code lang=”php”]
/*
* Plugin Name: Küfürsüz Yorumlar
* Plugin URI: http://www.teknolojiherseyim.com/kufursuz-yorumlar-eklentisi
* Description: Yorumlardaki küfürleri engeller ve küfür içeren kelimeleri engeller.
* Author: Hakan Yamanoglu
* Author URI: http://www.teknolojiherseyim.com
* Version: 1.0
*/
[/code]

test.php adında yeni bir dosya açın ve dosyanın en üstüne bu satırları yapıştırın. Kodlarda da görebileceğiniz gibi WordPress buradaki her satırı ayrı ayrı ele alarak eklentinizi tanıyor. Kısaca bu satırları ele alalım.

  • Plugin Name = Eklentinizin adı.
  • Plugin URI = Eklentinizin URL’i.
  • Description = Bu kısıma eklentiniz hakkında kısa bir açıklama yazın.
  • Author = Yazar ismi.
  • Author URI = Yazarın web site adresi.
  • Version = Eklentinizin versiyonu.

test.php dosyasını wp-content/plugins klasörüne gönderin ve WordPress admin paneli/eklentiler kısmına girin.

Gördüğünüz gibi yazdığımız tanımlamalar ile artık eklentiler sayfasında yazdığımız eklentiyi görebiliyoruz. Tanımlama kısmı bu kadar arkadaşlar. Zaten en kolay bölüm de bu. Unutmayın tanımlama kodlarını yazarken “*” işaretlerini de olduğu gibi kopyalayıp yazıyoruz.

Action, Filter ve Hook(Kanca) Nedir?

WordPress eklentilerinin nasıl yazıldığıyla ilgili olarak yabancı kaynakları araştırdıysanız “add_action“, “add_filter” “hook” gibi kavramları görmüş olmalısınız.

add_filter ve hook

add_filter fonksiyonu, yazdığımız fonksiyonumuzu WordPress’e tanıtmaya yarar. Aynı zamanda add_filter, ekrana verilen çıktı üzerinde değişiklikler yapmamızı yani varolan bir içeriği filtreleyerek bizim istediğimiz sonuca dönüştürmemize yarar. Örnek vermek gerekirse; mesela bir WordPress blogundaki yazılmış yazılara yapılan yorumları düşünelim: add_filter fonksiyonu ile önceden yazılmış bir yoruma müdahale edip, tamamını ya da bir bölümü değiştirmek ya da çok farklı şeyler yapmak mümkündür. Bu konuyu daha net kavrayabilmek için aşağıdaki örneğimizi inceleyelim.

[code]

add_filter(‘comment_text’,’yorum_degistir’);?>

[/code]

Burada add_filter komutu ile, birazdan yazacağımız “yorum_degistir” adlı fonksiyonu, WordPress’in comment_text* fonksiyonuna atıyoruz. Yani bundan böyle yorum_degistir fonksiyonu, WordPress’in comment_text fonksiyonunun işlevlerine müdahale etmemizi sağlayacak. İşte buradaki comment_text fonksiyonuna hook(kanca) diyoruz. WordPress’in bundan başka daha bir sürü kanca fonksiyonu var. Bu fonksiyonların tamamına şuradan ulaşabilirsiniz. Kancaların ne iş yaptığını, hangi durumlarda hangi aşamalara müdahale ettiğini öğrenmek için de yine bu siteyi kullanabilirsiniz.

* comment_text = Yoruma yazılan verileri barındırır.

Fonksiyonumuzu yazalım

Az önce WordPress eklentisi yazarken hayati önem taşıyan add_filter kısmını tanımladık. Şimdi adı geçen yorum_degistir fonksiyonunu yazarak ilk eklentimizi adım adım oluşturalım.

[code]

function yorum_degistir($content) {
$icerik = $content;
$ara = “hakan”;
$uzerini_kapat= bununla_kapat();
$icerik =str_replace($ara,$uzerini_kapat, $icerik);
return $icerik;
}

function bununla_kapat() {
$karakter= “****”;
return $karakter;
}

[/code]

Dikkat ettiğiniz gibi yorum_degistir fonksiyonunu oluştururken, fonksiyon başlığında $content adlı bir değişken oluşturduk. $content, add_filter fonksiyonu ile kanca(hook) atılmış bölümdeki içeriği işaret eder. Biz kancamızı “comment_text” bölümüne atmıştık. Böylece $content değişkeni, yorum bölgesindeki yazan yazıları değer olarak alacak.

Fonksiyonumuzun yaptığı iş basitçe, yapılan yorumlarda eğer “hakan” kelimesi geçiyorsa bu kelimelerin üzerini **** ile kapatmak. Yukarıda bununla_kapat() adlı bir fonksiyon daha kullandık ve bunu ilk fonksiyonumuzda $uzerini_kapat değişkenine atadık. Gördüğünüz gibi bütün bu anlattıklarımızın %90’ı php ile alakalı. Burada php nin str_replace komutunu kullanarak, bir içerikte geçen belirli bir kelimeyi, farklı bir kelimeyle değiştirdik. Yazdığımız kodları birleştirirsek test.php dosyamız şu şekilde oluşacak:

[code]

<?php
/*
*    Plugin Name: Yorum Değiştir
*    Plugin URI: http://www.teknolojiherseyim.com/yorum-degistir
*    Description: Yorumlardaki belirli kelimeleri değiştirir.
*    Author: Hakan Yamanoglu
*    Author URI: http://www.teknolojiherseyim.com
*    Version: 1.0
*/
function yorum_degistir($content) {
$icerik = $content;
$ara = “hakan”;
$uzerini_kapat= bununla_kapat();
$icerik =str_replace($ara,$uzerini_kapat, $icerik);

return $icerik;
}
function bununla_kapat() {
$karakter= “****”;
return $karakter;
}
add_filter(‘comment_text’,’yorum_degistir’,1);
?>

[/code]

Kodları yazdıktan sonra wp-content/plugins/yorum-degistir klasörü içine test.php dosyasını atın ve WordPress admin panelinden eklentiyi aktif hale getirin. Artık herhangi bir yazı içerisindeki herhangi bir yorumda “hakan” kelimesi geçerse, eklentimiz bu kelimenin üzerini “****” ile kapatacak. (:

Serinin bu ilk bölümünde, WordPress eklentisi yazmak için gerekli olan fonksiyonları ve kuralları basit olarak tanıdık ve ilk eklentimizi yazarak işe başladık. Görüldüğü gibi eklenti yazmak oldukça kolay. Fikir ve yorumlarınız sayesinde, zaman içerisinde WordPress Eklentisi Geliştirme konusunda muazzam bir Türkçe kaynak yaratacağımıza inanıyorum. Bu nedenle fikir ve yorumlarınızı esirgememenizi diliyorum.

Yazı dizimizin 2. bölümünde en çok kullanılan WordPress fonksiyonlarını öğrenecek ve yavaş yavaş veri tabanı ile etkileşime girmeye başlayacağız. Bu arada bol bol da örnek inceleyeceğiz.

Eğer buraya kadar sabırla okuduysanız sizi video ile başbaşa bırakıyorum (:

Etiketler:, , , , ,

18 Yorum

  1. müJdaT /

    Çok teşekkürler Hakan. İnan tam uyuyacaktım. Twitter’dan son anda gördüm ve izledim. Kulağa zor geliyor ancak birde videoyu izledim pekte zor değilmiş 🙂 En kısa zamanda bende çalışmalara başlayacağım.

  2. Yakup GÖVLER /

    Merhaba, Güzel yazınız ve video için teşekkürler. Ancak eklenti yazma ile ilgili fazla Türkçe kaynak yoktu demeniz beni üzdü. Aylar önce yazdığım buradaki yazımda eklenti yazma, buradaki yazımda bileşen yazma, buradaki yazımda Action Kancalarını (çok yakında action filters), buradaki yazımda add_action fonksiyonu konularını ayrıntılı olarak anlatmıştım. Keşke google’da küçük bir arama yapsaydınız, örneğin, “wordpress eklenti yazma” ifadesini aratsaydınız, yazılarıma ulaşabilirdiniz. Ayrıca geliştirdiğim/geliştireceğim eklenti ve bileşenlere sitemden ulaşabilirsiniz. Bu yorumu, yayınlamasanız da olur. Başkalarının da bu konularda yazıları bulunduğunu, yazınızda belirtmeniz gerektiğini düşündüğüm için bu yorumu yazdım.

  3. Hakan Yamanoğlu /

    @Müjdat Ben teşekkür ederim Müjdat umarım işine yarar 🙂 @Yakup Gövler Haklısın Yakup. Yazdıkların gerçekten detaylı ve yararlı. Burada amaç eklenti yazma ile alakalı muazzam bir Türkçe kaynak yaratmak. Esasında bu kaynaklara burada link verecektim ama ilk videoblog denememin heyecanıyla olsa gerek bu kısmı atlamışım (: Bu yüzden konuyu editledim, senin ve bu konuda yazı yazan diğer blog yazarı arkadaşlarımın ilgili yazılarına bağlantı verdim. Umarım bu hedefe kısa sürede ulaşırız ve ecnebi arkadaşlar nasıl ki Codex’e girip istediği bilgiyi açıklayıcı şekilde bulabiliyorlarsa, yarattığımız Türkçe kaynaklar ile de aynısını Türk geliştiricilere de sunabiliriz. Kolay gelsin

  4. rss_ems /

    Bu mükemmel yazı için çok teşekkürler.

  5. TEAkolik /

    Selamlar dostum ; Yazınızı okuyunca neden bende “kelime değiştirmek” diye bir eklenti yazmayayım ? Diye düşünmeye başladım. Sanırım çok güzel olur. Geçenlerde Blog’umda yazdım WordPress’de postlar arasından kelime değiştirmek. SQL olarak komutla Phpmyadmin’den değiştirdim sanırım bunu eklentiye çevirirsem TAG değiştirme yazı başlığı değiştirme ve yazılar arasından Kelime değiştirme olarak bir eklenti yazacağım…

  6. Eray USTA /

    Çok çok teşekkürler fakat Yakup hocanın yazısının linkini düzeltebilirmisin? 😀

  7. Hakan Yamanoğlu /

    Rica ederim. Linkte ne var (:

  8. ibrahim /

    Teşekkürlr hocam

  9. Celal /

    Faydalı bir makale olmuş..

  10. Murat /

    Merhaba, Emeğiniz için teşekkür ederim. Güzel bir dökümandı benim için.

  11. Birol /

    Mrb. bu yaptığınız eklenti çalışmasına ayarlar nasıl ekleriz. yani şöyle anlatayım bazı eklentileri etkinleştirdiğimizde panelde ayara menüsü geliyor ordan ayarlarını yapabiliyoruz .. bu tarz bir çalışmayı nasıl yaparım. bi örnek varmı elinizde ?

  12. T.Cevher Beydilli /

    Ellerinize sağlık Hakan abi. İlk başta çalıştıramamıştım,video çok yardımcı oldu.Devamını bekliyorum. 😉

  13. Kemal /

    teşekkürler gerçekten güzel anlaşılır bir yazı olmuş ayrıca video ile de anlatımı güçlendirmişsiniz tekrar teşekkürler…

  14. ercann /

    slm arkadaşlar wordpress deki yorum yapınız yazısını nereden düzenleyeceğiz yardımcı olurmusunuz.

  15. sevda /

    bilgiler için teşekkürler

  16. merhaba bir eklenti yazdırmayı düşünüyordum acaba yazabilirmisiniz ?

    • Hakan Yamanoğlu /

      Profesyonel anlamda dışarıya eklenti yazmıyorum. İlginiz için teşekkürler.

Trackbacks/Pingbacks

  1. Web’den Seçme Bağlantılar #9 | Sinerjik Günlük - [...] Wordpress eklenti yazmak için ilk bölüm Bağlantı [...]
  2. Wordpress eklentisi yazıyoruz: 2- Wordpress eklentisi yazmak için 4 neden | Teknoloji Herşeyim - [...] Wordpress Eklentisi Yazıyoruz serimizin ikinci yazısıyla karşınızdayım. Daha önce söylediğim gibi Wordpress eklentisi yazmak ile ilgili Türkçe kaynakların sayısı…
  3. renkli teneke » Renkli Arşiv » İnternet Çöplüğünden Seçmeler #1 - [...] Navigation) # - Şehriderya İkon Seti-1 Karşınızda # - Wordpress eklentisi yazmakl isteyenler? 1# - 2# - iPhone 3G…

Cevap yaz

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir