13 Haziran 2009

WordPress'te Bilinmeyen 5 Faydalı Fonksiyon

WordPress Yorum Ekle

WordPress çekirdek dosyaları bir çok faydalı fonksiyona sahip. Bunlar içerisinde özellikle eklenti yazarlarının hoşuna gidecek 5 tanesini ve kullanımlarını açıklıyorum.

1. wp_mail() Fonksiyonu

Biliyorsunuz WordPress ve eklentilerin bazıları çeşitli işlemler sonucunda yöneticilere ya da istenilen kişilere e-posta yollar. PHP'de e-posta yollamak için mail() fonksiyonu kullanılır. Ancak WordPress bu işi daha güzel ve düzenli bir şekilde yapmanızı sağlamak için wp_mail() adında güzel bir fonksiyon sunar bize. Aşağıdaki gibi bir kodla istediğiniz kişiye, istediğiniz konu başlığı altında, istediğiniz bir içeriği yollayabilirsiniz.

  1. <?php
  2. $kime = 'mahmutarmut@hotmail.com';
  3. $konu = 'Armutun iyisini sen yersin';
  4. $mesaj = 'Bir atasözümüz vardı hani, armudun iyisini kim yer diye. Aklıma hemen sen geldin!'
  5.  
  6. $posta = wp_mail($kime, $konu, $mesaj);
  7.  
  8. if($posta) echo 'Mesajınız yollandı!';
  9. else echo 'Mesajınız yollanırken bir hata oluştu, yeniden deneyin!';
  10. ?>

Gördüğünüz gibi basit bir kod ile kolaylıkla e-posta yollayabiliyorsunuz. Eğer PHP'deki mail() fonksiyonuna hakimseniz, wp_mail() fonksiyonuna headers (başlık bilgisi) yollayarak göndereceğiniz e-postaları daha da özelleştirebilirsiniz.

2. wp_loginout() Fonksiyonu

Fonksiyon size istediğiniz yerde, üyeleriniz için Giriş ya da Çıkış yapmalarını sağlayacak bağlantı oluşturmanızı sağlar. Bu fonksiyonu kullandığınız yerde, eğer üye sitenize giriş yapmamışsa Giriş, giriş yapmışsa Çıkış bağlantısını otomatik olarak oluşturur. Önceki sürümlerde bu işlemleri kendimiz wp-login.php dosyasına bağlantı vererek yapıyorduk ama artık buna ihtiyacımız yok. Aşağıdaki şekilde istediğiniz yerde Giriş/Çıkış değişimli bağlantı oluşturabilirsiniz.

  1. <?php wp_loginout(); ?>

WordPress 2.8 ile birlikte bu fonksiyona yeni bir parametre eklenmiş durumda. Diyelim ki ziyaretçiniz bu fonksiyon ile oluşturulmuş olan Giriş bağlantısına tıklayıp, giriş yaptıktan sonra belirlediğiniz bir sayfaya yönlendirilsin istiyorsunuz, örneğin ana sayfanıza geri dönülsün istiyorsunuz. Bunun için fonksiyonu aşağıdaki gibi kullanmanız yeterli.

  1. <?php wp_loginout('http://www.siteadiniz.com/');?>

3. clean_url()

Bu fonksiyon parametre olarak verdiğiniz bağlantı yapısını düzeltmenizi sağlar. Fonksiyon eğer yoksa http:// ibaresini ekler, & (ampersand) karakterini html kod karşılığı ile değiştirir ve bağlantı yapılarındaki birkaç problemi de giderir. Geliştirdiğiniz eklentide web adreslerini alıp, kullanacaksanız bu fonksiyonu kullanmanız bağlantıları doğru ve güvenli almanız açısından önemli.

  1. <?php
  2.   $baglanti = clean_url('www.siteadi.com/?p=10');
  3.  //Çıktısı http://www.siteadi.com/?p=10 olacaktır.
  4. ?>

4. wp_rss() Fonksiyonu

Bu fonksiyon verilen RSS besleme adresinden, başlıkları alarak bağlantı listesi oluşturur. Fonksiyonu oluşturmadan önce WordPress ile birlikte gelen rss.php dosyasını include komutu ile ithal etmelisiniz. Aşağıdaki gibi bir kodla benim sitemdeki son yazılardan 5 tanesini, FeedBurner hesabım üzerinden alabilirsiniz mesela.

  1. <?php
  2. include_once(ABSPATH . WPINC . '/rss.php'); // dosyayı ithal ediyoruz
  3. wp_rss('http://feeds.feedburner.com/yakupgovler', 5);
  4. ?>

Kod ile aşağıdaki gibi html çıktısı alırsınız.

  1. <ul>
  2.  <li><a href="yazı adresi" title="yazı açıklaması">yazı başlığı</a></li>
  3.  ...
  4. </ul>

5. antispambot() Fonksiyonu

Eklentilerimiz içerisinde ya da temamız içerisinde e-posta adreslerimizi vermek isteyebiliriz ya da e-posta gönderilebilinmesi için <a href="mailto:e_posta@hotmail.com">E-Postamız</a> html kodunu kullanarak bağlantı oluştururuz. Ancak e-posta adresimizi açık olarak yazmak spambot denilen e-posta adresi toplayıcı programlar için fırsat verecektir. WordPress e-posta adresinizi, botlara karşı korumamızı sağlayacak antispambot() fonksiyonunu sunuyor bize. Fonksiyonu aşağıdaki gibi kullanabilirsiniz.

  1. <a href="mailto:<?php echo antispambot("e_posta@hotmail.com"); ?>" title="E-Posta Adresimiz">E-Posta Gönder</a>

Bu kod sonucunda aşağıdaki gibi bir bağlantı kodu ortaya çıkacak.

  1. <a href="mailto:e_posta@hotmail.com" title="E-Posta Adresimiz">E-Posta Gönder</a>

Gördüğünüz gibi fonksiyon verdiğimiz e-posta adresindeki her harfin html kod karşılığını kullanarak botlar için anlaşılmaz hale getirmiştir. Fonksiyon her çağrıldığında da adresi oluşturan harflerden rastgele seçilenler dönüştürüldüğünden her sayfa yenilendiğinde farklı bir e-posta adres yapısı oluşacak ve botlar e-postamızı okuyamayacak. Nasıl iyi mi?

Eklenti geliştiricisi iseniz size tavsiyem WordPress'teki bütün dosyaların içeriklerini, eklentilerin hangi işleri hangi fonksiyonları kullanarak yaptıklarını incelemenizdir. Bu şekilde daha etkili eklentileri kısa sürelerde hazırlamaya başlayabilirsiniz.

Kaynak


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

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’te Bilinmeyen 5 Faydalı Fonksiyon” yazısı için 21 Yorum

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

  1. Mehmet dedi ki:

    teşekkürler Yakup bey..

  2. İlker Aksoy dedi ki:

    Mükemmel olmuş, elinize sağlık hocam...

  3. raozkardes dedi ki:

    wp_mail() Fonksiyonu Semih Beyin yazdığı son eklentide (Mail ile Yorum Cevaplama Eklentisi)kullanılabilirse iyi olur. Nasıl uyarlanabilir? Bir çalışmanız var mı Yakup Öğretmenim?

    Mail ile Yorum Cevaplama Eklentisini sitemizde kullanıyoruz. Ne kadar çok ihtiyacımız varmış meğer. Semih Bey'e buradan da teşekkürlerimi ileteyim.

  4. Yakup Gövler dedi ki:

    Semih eklentisinde sanırım bu fonksiyonu kullanıyordu. Şu an sitesinde bir problem var sanırım, o yüzden kontrol edemiyorum.

  5. Semih dedi ki:

    Yok hocam, eklentide PHPnin nadide fonksiyonu mail kullandım 🙂

  6. Yakup Gövler dedi ki:

    Sitenizde problem vardı, düzelince kontrol ettim, mail fonksiyonunu kullanıyormuşsunuz.

  7. Semih dedi ki:

    Artık değiştirdim hocam 🙂 yeni sürüm yayınladım 🙂

  8. Yakup Gövler dedi ki:

    Yeni sürümü farkettim. Aslında artık şu WP'de Ajax olaylarına girmek gerek diye düşünüyorum. Mesela senin bu eklentinde Mail ile Cevapla bağlantısına tıklandığında aynı hızı düzenle gibi küçük bir alan açılıp, hiç sayfa değiştirmeden e-posta yollanmasını sağlamak çok şık olur. Ama öğrenecek o kadar çok şey var ki Ajax işine bir türlü sıra gelmiyor.

  9. Semih dedi ki:

    Aslında onu yapacaktım ancak, jsye ekleme yapmak gerekiyordu yada sıfırdan js yazmam gerekliydi. js sevmem ben 🙂

  10. engin dedi ki:

    wp_loginout() Fonksiyonu umduğum gibi çıkmadı. Örneğin ana sayfada iken çıkışlar yanlış yere yönleniyor p=1 hello world'a yönleniyor mesela. TAbi sidebar'da işe yarıyor. Ama peter's login redirect de var tabi.

  11. Emrah dedi ki:

    Teşekkürler 😉

  12. gevv dedi ki:

    kusura bakmayın hocam yazmayı unuttum "flod" oldu 🙂 acaba antispambot() kodu yazarların e-posta adresini görüntülemek için kullandığımız the_author_email kodu için nasıl kullanabilir

  13. Yakup Gövler dedi ki:

    Burayı inceleyerek yapabilirsiniz. Ancak wp 2.8 ile birlikte the_author_email fonksiyonu yerine the_author_meta - get_the_author_meta fonksiyonları kullanılmaya başlandı.
    < *a href="mailto:<*?php echo antispambot(get_the_author_meta('user_email')); ?*>">e-posta yolla< */a>
    şeklinde wp 2.8'de kullanabilirsin. Yıldız karakterlerini silmeyi unutma.

  14. gevv dedi ki:

    Tekrar teşekkürler hocam sağolsınız

  15. gevv dedi ki:

    Hocam yorumlara kod ekleme sorunlu galiba kusura bakmayın üst üste yorum yaptım bu son 🙂

    Kullandığım kod http://pastebin.com/m4d4547b0

  16. Yakup Gövler dedi ki:

    @gevv, normalde çalışması lazım. Acaba atladığınız birşey mi var? Yazı içerisindeki örnekteki kodu kendi bilgisayarımda denedim, ekran çıktısı da denememin sonucu.
    Bilgisayarımda WP 2.8 ile verdiğin kodu da denedim çalıştı. E-posta adresi şifrelenmiş olarak geldi.

  17. gevv dedi ki:

    Bende anlamadım hocam acaba bu koddun çalışabilmesi için sunucuda bir modülün aktif olmasımım gerekli hani resim işlemleri için gd2 olur onun gibi bir şey

  18. gevv dedi ki:

    Hocam kusura bakmayın sorun benmişim 🙂 firefox üzerinde seçimin kaynağını görüntüle yapınca mail normal görünüyor sayfanın kaynağını görüntüleyince kodun işe yaradığını gördüm 🙂

  19. Yakup Gövler dedi ki:

    Fonksiyonun yaptığı tek şey, e-posta adresini oluşturan harfleri html kodlarına ya da ascii kodlarına dönüştürmek. İlgili dosyayı bana e-posta ile yollar mısın? Ayrıca bu kodu yazıya the_content kancasını kullanarak mı ekliyorsun, yoksa doğrudan yazarları gösterdiğin tema dosyasını mı düzenledin? Birinci seçenekse belki kullandığın bir eklenti şifrelemeyi eski haline getiriyor olabilir. Dosyayı bekliyorum.

  20. tr dedi ki:

    wp_rss() fonksiyonu ile yazı başlığının yanı sıra yazının içeriğini/kendisini de alabilme şansımız var mıdır acaba?

    Ve bu fonksiyonu ana sayfada normal yazılarla birlikte veya tek başına listelemek mümkün mü? (yoksa sadece sidebarda mı kullanılabiliyor?)

  21. Yakup Gövler dedi ki:

    @tr, wp_rss fonksiyonu ile sadece yazı bağlantılarını liste olarak yazdırabilirsiniz.