WordPress自动拒绝包含相关关键字的垃圾评论的方法

  • A+
所属分类:建站笔记

鸟哥曾经贴过一篇教程:《WordPress自动拒绝垃圾评论》,将以下代码粘贴到你的主题functions.php模板中即可实现拒绝评论中出现相关的关键字,代码如下:

  1. function in_comment_post_like($string, $array) {
  2.     foreach($array as $ref) { if(strstr($string, $ref)) { return true; } }
  3.     return false;
  4. }
  5. function drop_bad_comments() {
  6.     if (!emptyempty($_POST['comment'])) {
  7.         $post_comment_content = $_POST['comment'];
  8.         $lower_case_comment = strtolower($_POST['comment']);
  9.         $bad_comment_content = array(
  10.             'viagra',
  11.             'hydrocodone',
  12.             'hair loss',
  13.             'xanax',
  14.             'tramadol',
  15.             'russian girls',
  16.             'russian brides',
  17.             'lorazepam',
  18.             'adderall',
  19.             'dexadrine',
  20.             'no prescription',
  21.             'oxycontin',
  22.             'without a prescription',
  23.             'sex pics',
  24.             'family incest',
  25.             'online casinos',
  26.             'online dating',
  27.             'cialis',
  28.             'best forex',
  29.             'amoxicillin'
  30.         );
  31.         if (in_comment_post_like($lower_case_comment, $bad_comment_content)) {
  32.             $comment_box_text = wordwrap(trim($post_comment_content), 80, "\n  ", true);
  33.             $txtdrop = fopen('/var/log/httpd/wp_post-logger/nullamatix.com-text-area_dropped.txt', 'a');
  34.             fwrite($txtdrop, "  --------------\n  [COMMENT] = " . $post_comment_content . "\n  --------------\n");
  35.             fwrite($txtdrop, "  [SOURCE_IP] = " . $_SERVER['REMOTE_ADDR'] . " @ " . date("F j, Y, g:i a") . "\n");
  36.             fwrite($txtdrop, "  [USERAGENT] = " . $_SERVER['HTTP_USER_AGENT'] . "\n");
  37.             fwrite($txtdrop, "  [REFERER  ] = " . $_SERVER['HTTP_REFERER'] . "\n");
  38.             fwrite($txtdrop, "  [FILE_NAME] = " . $_SERVER['SCRIPT_NAME'] . " - [REQ_URI] = " . $_SERVER['REQUEST_URI'] . "\n");
  39.             fwrite($txtdrop, '--------------**********------------------'."\n");
  40.             header("HTTP/1.1 406 Not Acceptable");
  41.             header("Status: 406 Not Acceptable");
  42.             header("Connection: Close");
  43.             wp_die( __('万恶的发贴机!') );
  44.         }
  45.     }
  46. }
  47. add_action('init', 'drop_bad_comments');

 

第10到29行是关键字,只要按照上面的格式加入,如果评论包含关键字的话,就会提示错误。以后如果遇到新到垃圾评论关键字,在WordPress的后台外观-编辑-functions.php添加就可以了。

 

但是如果主题使用的是鸟哥的HotNewsPro的话,添加这段代码会提示出错,导致博客无法打开,原因是出在第43行,绝大多数的博客都可以使用wp_die,这个函数是返回给前台的用户看的,比如上面的代码,如果评论中包含关键字,就会返回:万恶的发贴机!,但是鸟哥的主题使用了自定义的函数,所以如果你也用的是鸟哥的主题,那么将wp_die改为err即可,就不会出现错误了

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: