Fragmente de cod WordPress pentru a reduce SPAM-ul pe blog

18 June 2013

In acest articol va voi prezenta cateva fragmente de cod wordpress, cu ajutorul catora putem reduce semnificativ spamul pe blog. Spamul este o problema cu care de confrunta fiecare blogger. Daca utilizati WordPress, sigur folositi Akismet. Eu il consider cel mai puternic plugin care ne protejeaza impotriva comentariilor spam. Cu toate acestea, mai are si unele scapari. Cel putin asta am descoperit in cazul meu.

Pe langa acest plugin, am descoperit si cateva “trucuri” care ne pot ajuta destul de mult. In continuare, va voi prezenta cateva fragmente de cod, care ne pot ajuta sa reducem spamul pe blog.

Marcarea automata ca spam a comentariilor cu un url foart lung

Aici ma refer la autor url. Acel link catre blogul/site-ul persoanei care lasa comentariu. Akismet marcheaza automat ca spam, comentariile care au un url mai lung de 50 de caractere.

Fragmentul de cod de mai jos, trebuie inserat in fisierul functions.php. Acest cod marcheaza ca spam orice comantariu care are in semnatura, un url cu peste 50 caractere. Daca doriti sa introduceti o alta lungime, atunci puteti modifica in linia 4.

<?php

  function rkv_url_spamcheck( $approved , $commentdata ) {
    return ( strlen( $commentdata['comment_author_url'] ) > 50 ) ? 'spam' : $approved;
  }

  add_filter( 'pre_comment_approved', 'rkv_url_spamcheck', 99, 2 );

?>

Eliminarea campului URL din semnatura

[adsense float=”center”]Aceasta metoda reprezinta o masura radicala care ne poate scapa de spam, doar ca vizitatorii nu isi mai pot lasa absolut deloc, link-ul catre blogul sau site-ul lor. Dupa parerea mea, aceasta masura poate cauza o scadere semnificativa a comentariilor.

Dupa ce intoduceti fragmentul de cod in fuctions.php, campul URL din semnatura va disparea.

function remove_comment_fields($fields) {
 unset($fields['url']);
 return $fields;
}
add_filter('comment_form_default_fields','remove_comment_fields');

Anularea legaturii directe a link-urilor din textul comentariului

Daca aveti vizitatori care lasa link-uri in textul comentariului, irelevante, si doar cu scopul de a face spam, atunci puteti elimina legatura directa a link-ului. Adica eliminati posibilitatea de a fi clickabil.

remove_filter('comment_text', 'make_clickable', 9);

Atributul “nofollow” pentru toate link-urile externe din textul comentariului

Am observat ca de obicei acestea sunt “nofollow”, dar nu la toti. Pe cine intereseaza, codul este mai jos.

add_filter('comment_text', 'auto_nofollow');

function auto_nofollow($content) {
 //return stripslashes(wp_rel_nofollow($content));

 return preg_replace_callback('/<a>]+/', 'auto_nofollow_callback', $content);
}

function auto_nofollow_callback($matches) {
 $link = $matches[0];
 $site_link = get_bloginfo('url');

 if (strpos($link, 'rel') === false) {
 $link = preg_replace("%(href=S(?!$site_link))%i", 'rel="nofollow" $1', $link);
 } elseif (preg_match("%href=S(?!$site_link)%i", $link)) {
 $link = preg_replace('/rel=S(?!nofollow)S*/i', 'rel="nofollow"', $link);
 }
 return $link;
}

PS: codurile se vor copia in fisierul functions.php. Ca masura de siguranta, recomand backup-ul fisierului inainte de a-i aduce orice modificare. Nu am testat codurile personal.

No Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.