因为访客很少,我把Akismet也停用了,没想到最近几乎每天都会收一条英文的SPAM(这个…难道本少侠的名声都传到海外去了),为此特想了个法子去除评论中的超链接,做成2个插件的形式,其实代码就几句,也有很详细的注释,就不多说了,直接上代码。
hu_no_comment_links.php:
使评论不包含任何超链接(管理员不受影响),并且在新窗口打开评论者的网站
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | < ?php /* Plugin Name: Hu No Comment Links Plugin URI: http://www.hu-yang.com/ Description: 使评论不包含任何超链接(管理员不受影响),并且在新窗口打开评论者的网站。 Version: 0.1 Author: Anthony Hu Author URI: http://www.hu-yang.com/ */ // wp-includes/formatting.php中的make_clickable相关函数会把URL、email、ftp地址自动转为HTML形式的超链接。 // 以下语句去除这种自动转换 remove_filter('comment_text', 'make_clickable', 9); // 在新窗口打开评论者的网站 add_filter('get_comment_author_link', 'hu_popuplinks', 6); function hu_popuplinks($text) { $text = preg_replace('/<a (.+?)>/i', "<a $1 target='_blank'>", $text); return $text; } /* 评论中允许的HTML标记是在wp-includes/kses.php中定义的, 要添加或去除哪些HTML标记只要覆盖kses.php中的$allowedtags变量就可以了。 去除评论对HTML标记</a><a>的支持。 */ $allowedtags = array( // 'a' => array( // 'href' => array (), // 'title' => array ()), 'abbr' => array( 'title' => array ()), 'acronym' => array( 'title' => array ()), 'b' => array(), 'blockquote' => array( 'cite' => array ()), // 'br' => array(), 'cite' => array (), 'code' => array(), 'del' => array( 'datetime' => array ()), // 'dd' => array(), // 'dl' => array(), // 'dt' => array(), 'em' => array (), 'i' => array (), // 'ins' => array('datetime' => array(), 'cite' => array()), // 'li' => array(), // 'ol' => array(), // 'p' => array(), 'q' => array( 'cite' => array ()), 'strike' => array(), 'strong' => array(), // 'sub' => array(), // 'sup' => array(), // 'u' => array(), // 'ul' => array(), ); ?> </a> |