一客户的需求,需要隐藏评论用户名称,但是又不能完全隐藏,一开始我们是想在用户名前后随机增加数字和字母的,不过后来搜索Wordpress用户名资料的时候,发现有人已经写了关于隐藏Wordpress用户名的代码,就拿来测试用了下,发现在新版本也是可以的,这个方法是用星号代替用户名中间的几位。

随着这个强大的互联网搜索引擎,半隐藏注册用户,也是为了网站用户的隐私安全。

具体代码如下,添加到主题的functions.php文件里面,我也忘记具体是那个网站看见的代码了:

//隐藏评论用户名
function cut_str ($string, $sublen, $start = 0, $code = 'UTF-8') {
 if ($code == 'UTF-8') {
 $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
 preg_match_all($pa, $string, $t_string);
 if (count($t_string[0]) - $start > $sublen) {
 return join('', array_slice($t_string[0], $start, $sublen));
 }
 return join('', array_slice($t_string[0], $start, $sublen));
 } else {
 $start = $start*2;
 $sublen = $sublen*2;
 $strlen = strlen($string);
 $tmpstr = '';
 for ($i=0; $i< $strlen; $i++) {
 if ($i>=$start && $i< ($start+$sublen)) {
 if(ord(substr($string, $i, 1))>129) {
 $tmpstr.= substr($string, $i, 2);
 } else {
 $tmpstr.= substr($string, $i, 1);
 }
 }
 if (ord(substr($string, $i, 1))>129) {
 $i++;
 }
 }
 return $tmpstr;
 }
}
 
function my_get_comment_author_link() {
 $url = get_comment_author_url($comment_ID);
 $author = cut_str(get_comment_author($comment_ID), 1, 0).'***'.cut_str(get_comment_author($comment_ID), 1, -1);
 if (empty($url) || 'http://' == $url) {
 return $author;
 } else {
 return "<a target='_blank' href='$url' rel='external nofollow' class='url'>$author</a>";
 }
}
add_filter('get_comment_author_link', 'my_get_comment_author_link');