一客户的需求,需要隐藏评论用户名称,但是又不能完全隐藏,一开始我们是想在用户名前后随机增加数字和字母的,不过后来搜索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');