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