WordPress için eklenti yazmak…-4

Evet, nerede kalmıştık. Eklentimizin artık son kodlamalarına geçiyoruz yavaş yavaş. Ne eklentisi diyenler için WordPress için eklenti yazmak… , WordPress için eklenti yazmak…-2 ve WordPress için eklenti yazmak…-3 yazılarını dikkatle okumalarını tavsiye ediyorum. Eğer bu yazıyla ilk defa karşılaşıyorsanız lütfen diğerlerine göz atınız.

Eklentimizin %90 kadarını yazmıştık hatırlarsanız. Şimdi ise bunu sitemizdeki yazılarımızın, sayfalarımızın ya da anasayfamızın içerisine nasıl ekleriz ve eklentimizi sonlandırırız onu görelim.

Başlayalım…

Öncelikle bu yazı içerisinde WordPress’in is_single(), is_page(), is_home(), add_filter() özelliklerini kullanacağız. Bu fonksiyonlardan bazılarına aşina olabilirsiniz. Ama aşina değilseniz merak etmeyin açıklayacağım 🙂 Ayrıca fonksiyon isimlerine tıklayarak WordPress Codex sayfasından da bilgi edinebilirsiniz.

is_single() : WordPress in koşul kontrol etiketidir. Yani yaptığı şey, kullanılacak durum ve fonksiyonların gerekli tekil yazılarda (makalelerinizde, paylaşımlarınızda, içeriğinizin görüntülendiği yerlerde) gösterilip gösterilmemesi gerektiğini kontrol eder ve belirtilen özelliklere göre işlemin yapılmasını sağlar.
is_page() : is_single() fonksiyonuyla aynı işleve sahiptir. Sadece sayfaları kontrol ederek işlemini gerçekleştirir.
is_home() : is_single() fonksiyonuyla aynı işleve sahiptir. Sadece anasayfanızı kontrol ederek işlemini gerçkeleştirir.
add_filter() : Başlık, içerik gibi alanların içerisine eklenti kodlarımızı aktarmaya yarayan faydalı bir fonksiyondur.

Bu açıklamaların dışında is_single() ve is_page() içerisine gerek yazılarınızın/sayfalarınızın idleri ve sayfaların nicename olarak belirtilen seo uyumlu, Türkçe karakter içermeyen isimlerini kullanabiliyoruz. Bu konu başka bir makale içeriği, o da ayrı bir mevzu 🙂

Neyse, geçelim son kısma. Eklentimizin nerede ve içeriğin neresinde(?) göstereceğimiz konusunda gerekli kodları yazmaya başlayalım.

(?) the_content olarak bildiğimiz içerik bölgesinin öncesine veya sonrasına yerleştirebiliyoruz eklentimizin değerlerini. İçeriğin arasına da serpiştirebiliyoruz, ancak bu basit bir eklenti olacağından öncesi veya sonrasını kullanmak daha iyi ve basit olacaktır.

Yerimize karar verelim

Öncesine mi?, Sonrasına mı? Biz bu işi sonrasına ekleyerek yapalım. Tabii ki öncesi için gerekli kodları da size aktaracağım.

add_filter ve the_content

the_content bizim asıl içeriğimizi çağıran, yazılarımın görüntülenmesini sağlayan fonksiyonumuzdur. Bunun içerisine düzenlemelerimizi, eklenti içeriklerimizi ekleyebilmek için add_filter fonksiyonundan yararlanmamız gerekmekte. Bunu da şöyle yapıyoruz. Örnek olarak eklentimiz için gerekli bir fonksiyonumuz vardı hatırlarsanız. Onu geliştirip (eklentimizin kaydettiği veriyi çağırmasını söyleyerek) düzenleyelim.

Yukarıdaki basit hali. Şimdi eklentimizin değerini çağırmak için get_option (keza üçüncü yazıda da bashetmiştim) kullancağız.

Gördüğünüz üzere kodumuzdan echo satırını attık ve get_option kullanarak eklenti seçeneğimiz olan bilgiyi çektik. Bu fonksiyon merhaba_dunya(); olarak çağrılırsa şayet eklenti bilgisi alanındaki içeriğimiz gelecektir. Ama biz bunu içerik alanına kendi eklenmesi için ayarlayacağız. add_filter burada devreye giriyor ve kodumuz;

Hey hey, ne oldu bu koda böyle der gibisiniz değil mi 🙂 Şimdi öncelikle $content içeriğimizi düzenleyebilmemiz için gerekli. Bunu fonksiyona tanıtıyoruz ki neyi nereden alacağını ve işleyeceğini anlasın. Böylelikle $eklenti_bilgisi değerimizi içeriye aktarabiliyoruz. Bu kodla birlikte eklenti ile yazdığımız her değer otomatik olarak tüm site içeriğimzin sonunda yer alacak. Yani tekil yazı, anasayfa, sayfalar farketmeden tüm the_content içeren alanlara aktaracak. Burada iki sorunumuz olabilir.

  1. Eklentimizi sadece tekil yazılar için yazmışsak.
  2. Eklenti verimizin içeriğin öncesinde gelmesini istiyorsak.

Burada kurtarıcımız olarak is_page, is_home ve is_single araya giriyor. Ama ondan önce bir ufak detay var onu da aktarayım söz geçiyorum sayfa ve anasayfa mevzuna.

Farkettiniz mi bilmiyorum $content alanının karşısındaki eşittir (=) işaretinden önce bir nokta (.) ekledim. Bu nokta gerekli. Şunun için gerekli, biz burada $content alalnına ekstra birşey eklemeye çalışıyoruz. Sonuna eklemek için de nokta işaretini kullanıyoruz. Bu ekleme durumu bir fonksiyon ya da bir satır içerisinde olsa şöyle olurdu.

Şayet öncesine ekleseydik;

Durumlar bundan ibaret. Şimdi WordPress için bunu yapalım. Biraz değişik olacak ama hemen hemen aynı mantıkta.

Burada değişen aslında çok basişt olarak değişkenlerin yerleri. Burada fonksiyonumuza $content değişkeninin içe aktarılacağı bilgisini katıyoruz. Böylelikle eklentimiz tarafından kaydedilen değer önce, içerik bilgisi sonra çağırılmış oluyor.

Sonlandıralım

Yazının üst kısımlarında bir yerde eklentimizin değeri sonradan göstermesi üzerinden hemfikir olduğumuz konusunda birşey hatırlıyorum. Böyle yapalım 🙂 Tek bir durum kaldı. Eklentimizi tam olarak nasıl göstereceğiz. Yani sadece tekil yazıda görünmesini istediğimiz bir eklenti olduğunu varsayarsak is_single() fonksiyonunu kullanmamız gerekmekte. Böyle yapalım. Fonksiyonumuz is_single ile donatılınca;

Gördüğünüz gibi oluyor. Bu durumda eklentimiz sadece tekil yazılarda görünecek, bunu sayfalarda göstermek için is_page(), anasayfada göstermek için is_home() kullanmak gerekir. Böylelikle değerimiz istediğimiz yerde görünmüş olur.

Eklentimizi bitirdik. Bir sonraki yazımda eğer çekebilirsem video anlatımla eklentimizi WordPress Eklenti tabanına eklemeyi göstereceğim. Çok uzun olmayan bir yazı yazmak istemiştim ama fonksiyon açıklamaları uzun.

Eklentinin son hali.

Sabrınız ve ilginiz için teşekkür ederim. Aklınıza takılan her soruyu gerek yorum kısmından gerekse iletişim bölümünden iletebilirsiniz. Elimden geldiğince hızlı bir şekilde cevap vermeye çalışırım.

İlk Yazı : WordPress için eklenti yazmak…
İkinci Yazı : WordPress için eklenti yazmak…-2
Üçüncü Yazı : WordPress için eklenti yazmak…-3

Selametle

  • Vectorman87

    Çok teşekkürler harika bir seri olmuş. Birde Jquery ve harici css, js dosyalarının eklentilerde nasıl kullanılacağına değinirseniz harika olur.

    • Vectorman,

      İlginize teşekkür ederim. Diğer konulara ilerleyen yazılarda değineceğiz. Şu sıralar elimdeki işlerden dolayı biraz zaman sorunu oluyor. Bu zaman sorunu ortadan kalktıktan sonra onları da anlatmaya çalışacağım.

  • Cenkatalay

    Üstad gerçekten çok güzel bir konuyu çok güzel bir şekilde anlatmışsın.Ne kadar teşekkür etsem azdır.Eline, Emeğine Sağlık.Bundan sonra siten tarayıca sürekli açık olacak 🙂 Başarılar…

  • Recep Yüksel

    1 den başladım okudum çok faydalı çok güzel teşekkür ediyorum

  • Evrim Altay

    Teşekkürler …

  • theChosen

    Hocam yazıların tamamını okudum, ellerinize sağlık gayet güzel yazmışsınız.

    PHP de çok eskiyim ama wordpress te yeniyim. Bu yazdığımız eklentiyi nasıl aktif edeceğimizi anlatmamışsınız. Acaba yazdığımız bu eklentiyi wordpress e nasıl ekleyebiliriz.

    Teşekkür ederim.

    • Öncelikle ben teşekkür ederim 🙂

      Sitenin kurulu olduğu alanda wp-content klasörü bulunur. Onun içinde plugins adında bir klasör daha vardır. Yazdığımız, düzenlediğimiz eklentileri bu plugins klasörünün içerisine atıyoruz.

      Daha sonra yönetim paneline giderek eklentiler bölümünde Yüklü eklentiler alanına geçiş yapıp etkinleştiriyoruz.

  • Tarık

    Anlatımınız çok iyi. WordPress e yeni başladım ve türkçe kaynak neredeyse yoktu ve sizi buldum sonunda 🙂 Yapmış olduğunuz eklentiyi değişirerek ufak bir eklenti yaptım. Bu eklentiyi bileşenler bölümünde nasıl gösterebilirim ?

    • Tarık onun için eklentinle aktif olacak bir bileşen (widget) alanı yazman gerekebilir. Bu konuyla ilgili bir makalem yok şu an için seni yönlendirebileceğim.

  • Pingback: WordPress için eklenti yazmak... - WpAdamı()

  • Pingback: WordPress için eklenti yazmak...-3 - WpAdamı()

  • Pingback: WordPress için eklenti yazmak…-2 - WpAdamı()

  • Merhaba, ben haftalardır WP’de profil sayfası yapmayı arıyorum ama bir türlü bulamadım. Bu konuda yardımcı olabilir misiniz? Daha detay burada mevcuttur: http://www.wp-tr.org/forumlar/topic/wpde-profil-sayfasi/ Şimdiden teşekkür ederim.

  • Emrah İpekyol

    Hocam Elinize sağlık faydasını hala devam ettiren bir yazı..