Tùy biến comment để tránh spam

Dưới là các hướng dẫn ngắn giúp bạn loại bỏ phần nào được tình trạng spam liên tục đến các bài viết của mình bằng việc tweak function.php

Bỏ trường URL trong bình luận:

Đa phần với comment form mặc định ta có các trường như Tên, Email, Website, Messege và việc có trường Website khiến cho nhiều người nghĩ rằng khi họ đăng bình luận bừa và chèn url vào sẽ tốt hơn cho website của họ. Có lẽ chúng ta nên loại bỏ nó khỏi form comment.

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

Liệt vào spam các bình luận có chèn LINK:

Nếu việc hủy bỏ trường URL trong form khiến bạn chưa an tâm thì bạn có thể thêm một lệnh tự động liệt vào danh sách các comment spam nếu nội dung có chèn URL:

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

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

Thay link bằng text thông thường:

Việc liệt vào spam các bình luận có link dẫn vẫn chưa hài lòng bạn có thể đưa chúng từ dạng link sang text {không có link}

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

Nofollow comment link

Bạn cho phép link trong nội dung comment? Có lẽ bạn sẽ cân nhắc việc có cho phép “Follow” hay “NoFollow” chúng.

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;
}

Liệt vào danh sách SPAM những comment có từ khóa dạng spam

Ngoài những cách trên, bạn có thể đưa comment vào spam khi nội dung của chúng có chứa một hay nhiều từ khóa bạn không muốn có

function in_comment_post_like($string, $array) { 
	foreach($array as $ref) { if(strstr($string, $ref)) { return true; } } 
	return false;
}
function drop_bad_comments() {
	if (!empty($_POST['comment'])) {
		$post_comment_content = $_POST['comment'];
		$lower_case_comment = strtolower($_POST['comment']);
		$bad_comment_content = array(
			'viagra', 
			'hydrocodone',
			'hair loss',
			'[url=http', 
			'[link=http', 
			'xanax',
			'tramadol',
			'russian girls',
			'russian brides',
			'lorazepam',
			'adderall',
			'dexadrine',
			'no prescription',
			'oxycontin',
			'without a prescription',
			'sex pics',
			'family incest',
			'online casinos',
			'online dating',
			'cialis',
			'best forex',
			'amoxicillin'
		);
		if (in_comment_post_like($lower_case_comment, $bad_comment_content)) {
			$comment_box_text = wordwrap(trim($post_comment_content), 80, "\n  ", true);
			$txtdrop = fopen('/var/log/httpd/wp_post-logger/nullamatix.com-text-area_dropped.txt', 'a');
			fwrite($txtdrop, "  --------------\n  [COMMENT] = " . $post_comment_content . "\n  --------------\n");
			fwrite($txtdrop, "  [SOURCE_IP] = " . $_SERVER['REMOTE_ADDR'] . " @ " . date("F j, Y, g:i a") . "\n");
			fwrite($txtdrop, "  [USERAGENT] = " . $_SERVER['HTTP_USER_AGENT'] . "\n");
			fwrite($txtdrop, "  [REFERER  ] = " . $_SERVER['HTTP_REFERER'] . "\n");
			fwrite($txtdrop, "  [FILE_NAME] = " . $_SERVER['SCRIPT_NAME'] . " - [REQ_URI] = " . $_SERVER['REQUEST_URI'] . "\n");
			fwrite($txtdrop, '--------------**********------------------'."\n");
			header("HTTP/1.1 406 Not Acceptable");
			header("Status: 406 Not Acceptable");
			header("Connection: Close");
			wp_die( __('bang bang.') );
		}
	}
}
add_action('init', 'drop_bad_comments');

Hãy thay giá trị của hàm $bad_comment_content = array (‘giá trị’) theo nhu cầu của bạn.

Từ chối kết nối không minh bạch

Cách này bạn cần chèn rule vào .htaccess nhằm mục đích từ chối các kết nối khách quan thiếu sự minh bạch từ site cụ thể:

# block comment spam by denying access to no-referrer requests
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*catswhocode.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule ^(.*)$ ^http://the-site-where-you-want-to-send-spammers.com/$ [R=301,L]

Liệt vào SPAM những comment có chèn link quá dài

Tại đây: http://wordpress.com.vn/blog/liet-vao-spam-nhung-comment-co-chen-link-qua-dai-443

Filed under: Tutorials

1 Comment

  1. Bài viết khá cụ thể !


Add a Comment

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

Comment *

Name
Email *
Website