11 Mayıs 2009

Bağlantıları Yorum Yapanlara Göster

WordPress Yorum Ekle

Üyelere Özel Bağlantılar yazısında bağlantıları sadece giriş yapmış olan üyelere nasıl göstereceğimizin bilgisini vermiştim. WP-tr Forum'daki konuda yazı içerisindeki bağlantıları görebilmek için bir eklenti isteği olmuştu. Bunu yapmak için aslında eklenti yazılabilir ama işi basitçe birkaç kod ile halletmek mümkün.

Bunun için aşağıdaki kodları temanızın Tema fonksiyonları (functions.php) dosyasına uygun şekilde ekleyin.

  1. function yg_yorumsuz_link_gizle($content) {
  2.   global $current_user, $post, $wpdb, $yg_yorumsuz_yazi;
  3.   $mesaj = '';
  4.  //Eğer giriş yapılmamışsa
  5.  if ( !is_user_logged_in() ) {
  6.    $mesaj = '<a href="'.get_bloginfo('url').'/wp-login.php">Bağlantıyı Görmek için Giriş/Yorum Yapmalısınız</a>';
  7.  }else{
  8.    //Giriş yapılmışsa ancak yorum yapılmamışsa
  9.    if ( (int) $yg_yorumsuz_yazi == $post->ID ) $yorum_sayisi = 0;
  10.     else $yorum_sayisi = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = '%d' AND user_id = '%d'", (int) $post->ID, (int) $current_user->ID));  
  11.    if ( 1 > $yorum_sayisi) {
  12.      $mesaj = '<a href="'.get_permalink().'#respond">Bağlantıyı Görmek için Yorum Yapmalısınız</a>';
  13.      $yg_yorumsuz_yazi = $post->ID;
  14.    }
  15.  }
  16.  if ($mesaj) return preg_replace('/(<a[^>][^<]*<\/a>)/', $mesaj, $content); else return $content;
  17. }
  18. function yg_link_gizle($attr) {
  19.  if ($attr['title'] == "") $attr['title'] = $attr['link'];
  20.  $link = '<a href="'.$attr&#91;'link'].'" title="'.$attr['title'].'">'.$attr['title'].'</a>';
  21. return yg_yorumsuz_link_gizle($link);
  22. }
  23. add_action('the_content', 'yg_yorumsuz_link_gizle');
  24. add_shortcode('ygizle', 'yg_link_gizle');

Kullanım

Kodları ekledikten sonra yazı içerisindeki bütün bağlantılar otomatik olarak uygun şekilde gizlenecektir.

Bağlantıları resimdeki gibi üç şekilde ekleyebilirsiniz

Eklenen bağlantılar giriş yapılmadan önce resimdeki gibi görünecek

Giriş yapıldıktan sonra eğer üye yorum yapmamışsa

Giriş yapıldıktan ve Yorum yazıldıktan sonra bağlantıların görünümü

Önemli Not

Bütün bağlantıların değil de, sadece [ygizle ...] yöntemi ile eklediğiniz bağlantıları gizlemek isterseniz kod içerisindeki add_action('the_content'... satırının başına // ifadesini ekleyin. Tabi ki sitede görüntülenen mesajları değiştirmek için kod içerisindeki ifadeleri düzgün bir şekilde değiştirmeniz yeterli.


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

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


“Bağlantıları Yorum Yapanlara Göster” yazısı için 3 Yorum

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

  1. Semih Aksu dedi ki:

    Elinize dilinize sağlık hocam 🙂

  2. derya dedi ki:

    Peki hocam benim bir sorum olacaktı. Ben giriş yapanları değilde sadece yorum yapmayanlara linkleri göstermek istemiyorum. Bunu nasıl yapabilirim ?

  3. Yakup Gövler dedi ki:

    Ziyaretçilerden yorum yapmayanları ancak sitemize üye olup da yorum yapmamaları durumunda anlayabiliriz. Üye olmayan bir kişinin yorum yapıp, yapmadığını takdir edersiniz ki anlamamız mümkün değil. Giriş yapmadan da ziyaretçinin hangi üye olduğunu bilemeyiz.
    Ancak belki şöyle birşey yapılabilir, üye olmamış ziyaretçiler yorum yaptıklarında bilgileri bir çerez (cookie) içerisinde tutulur. Tekil yazı gösterilirken bu çerez okunup, oradan e-posta bilgisi alınıp, yorum yapanlarınkiyle karşılaştırılıp, bağlantılar gösterilebilir. Ancak ziyaretçi çerezleri silerse, ziyaretçiye yorum yapmamış muamelesi yaparız ki bu da ziyaretçiyi kaçırabilir.