02 Mart 2009

Yazının Beslemede Yayımını Geciktirelim

WordPress Yorum Ekle

WordPress sorgu cümlesine müdahale etme imkanı veren posts_where kancasıyla (hook) ilgili bilgi ararken kancanın kullanımıyla ilgili güzel bir örneğe rastladım. Örnek, bir yazının beslemelerde daha geç yayımlanmasını sağlıyor. Yani diyelim ki siz yazıyı yayımladınız, besleme aboneleriniz yazıdan 5 dakika sonra haberdar olacaklar. Bu ne işimize yarayacak derseniz, yazıyı yayımladıktan sonra bazen hata yaptığımızı anlarız ya da yazıyı yayımlamaktan vazgeçebiliriz. Bu durumda RSS aboneleriniz bundan haberdar olmayacaklar.
WordPress, yazıları elde ederken ya da beslemeler için yazı oluştururken özel bir sorgu oluşturur. Bu sorgunun WHERE kısmı $where değişkeninde saklanır. Bu değişkene istediğiniz gibi müdahale edebilirsiniz. Bizim yapacağımızda, eğer sorgu beslemeler için (is_feed) oluşturulmuşsa WHERE cümlesine timestampdiff() MYSQL fonksiyonu ile müdahale edeceğiz.
Aşağıdaki örnek yazılarınızı beslemelerinize 5 dakika sonra yayımlayacak:

  1. /**
  2.  * içerik beslemelerde sonradan yayımlanacak
  3.  * $where değişkeni wp-includes/query.php dosyasında tanımlıdır
  4.  */
  5. function publish_later_on_feed($where) {
  6.   global $wpdb;
  7.  
  8.   if ( is_feed() ) {
  9.     $now = gmdate('Y-m-d H:i:s');
  10.     $wait = '5'; // integer 5 dakika bekle
  11.     $device = 'MINUTE'; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR
  12.     $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
  13.   }
  14.   return $where;
  15. }
  16. add_filter('posts_where', 'publish_later_on_feed');

Bu kodları temanızın Tema Fonksiyonları (functions.php) dosyasına eklerseniz, yazılarınız beslemelerinizde 5 dakika sonra yayımlanacak. Elbetteki bunu değiştirebilirsiniz. $wait değişkeni süreyi, $device değişkeni ise dakika, saat, gün, hafta... olarak değiştirerek istediğiniz gecikmeyi sağlayabilirsiniz.


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

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


“Yazının Beslemede Yayımını Geciktirelim” yazısı için 5 Yorum

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

  1. ByAgressif dedi ki:

    Burada ki zaman RSS servis sağlayıcısının güncelleştirilme aralağına göre değişebiliyor mu ? Yoksa burada ki zaman direk rss servisini etkiliyor mu ?

  2. Yakup Gövler dedi ki:

    Burada sadece bir hile yapılıyor, o da şu; RSS okuyucuya gönderilecek yazılar sorgulanırken 5 dakika önceki yazılar seçiliyor. RSS servis sağlayıcısıyla ilgili bir durum yok, sitenin yazıları göstermesiyle ilgili bir durum.

  3. melankoli dedi ki:

    eklenti konu başlığını ilk gördüğümde aklıma şu geldi yaşasın rss den bot ile verilerimizi araklayanlara bi nebzede olsa engel olabileceğiz, geç haberdar olursa botlar google indexlemiş olur konumuzu ve dolayısı ile orjinal yazı sahibi olan site spam filtresine takılmamış olur.

  4. Google Fan Webmaster Forum dedi ki:

    Beslemelerde Yazýyý Geç Yayýmlayalým...

    RSS beslemesini kullanarak yaz......

  5. NBA dedi ki:

    Makale için Teşekkürler..Faydalı Bilgiler var Sağolasınız