»

WordPress评论中随机显示本地头像设置中的一些问题的解决办法

    WordPress  
访客Wp Super CacheWordPress插件缓存浏览器SEOweb.config百度云加速网站镜像htaccess建站CLB网站优化伪静态数据库IIS重定向身份认证ApacheCDNwindows主机wordpress工作网络安全防盗链

为了解决 WordPress Gravatar头像加载缓慢的问题,有很多方法可以参考,其中一种方法就是利用本地上传的头像,之后随机加载。知更鸟给出了一段如下代码。但是,这代码也有问题,那就是:对同一个评论者不能固定显示头像的问题。同一个评论者的头像也会随机显示,如果刷新、或者同一评论回复了多次,头像就有点乱了。

 

  1. add_filter( 'get_avatar' , 'local_random_avatar' , 1 , 5 );  
  2. function local_random_avatar( $avatar$id_or_email$size$default$alt) {  
  3.     if ( ! emptyempty$id_or_email->user_id ) ) { //管理员账户的id数字为非零  
  4.         $avatar = ''.get_template_directory_uri().'/avatar/admin.jpg';  
  5.     }else{  
  6.         $random = mt_rand(1, 10); //mt_rand(1, 10) 数字为随机图片张数可以自行修改  
  7.         $avatar = ''.get_template_directory_uri().'/avatar/'. $random .'.jpg';  
  8.     }  
  9.     $avatar = "<img alt='{$alt}' src='{$avatar}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";  
  10.     return $avatar;  
  11. }  

 

上述问题的解决办法

我前一篇文章写过《将WordPress用户头像本地缓存,并把字母头像分配给无头像用户》一文,意思是把没头像的用户头像用字母图片代替。这里,字母和用户的名字是关联和一一对应的。

是怎么做到这点的呢?是利用了 JavaScript 中的 charCodeAt() 方法:返回指定位置的字符的 Unicode 编码,返回值是 0 - 65535 之间的整数。例如返回字符串第一个字符的 Unicode 编码(H 的 Unicode 值):

 

  1. var str = "HELLO WORLD";  
  2. var n = str.charCodeAt(0);  

 

返回值是 72 。

本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利

字母头像是将用户名的第一个字符变为 Unicode 编码的数字。从而使头像与用户名进行了一一对应。

而在 WordPress 中,大都使用了评论时填写的 Email 地址来对应用户。例如 WordPress 中先将用户的 Email 地址使用 md5() 函数进行MD5加密:md5(  strtolower( $email )  )

- - -

本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利

本文的解决思路也是从把 Email 进行MD5加密开始的,加密之后去掉非数字的字符,得到纯数字的字符,从而与用户进行一一对应。

例如,如果你有20张头像图片,可以这样设置:

 

  1. $f = md5( strtolower$email ) ); //md5加密  
  2. $digits = preg_replace( '/[^0-9]/i', ''$f ); // 去掉字符串中的所有非数字字符  
  3. $num = $digits%20; //除以20求余数,可以得0~19的数字  

 

相应的头像图片编号为:0.jpg、1.jpg、2.jpg … 19.jpg 。

本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved

上述只是一种思路,当然,也有其他思路,例如将数字字符串截取几位,进行相应的对应,也是一种办法。这里涉及到概率的问题,即哪些数字出现的机率大的问题。既然是随机,从 0 到19,出现的机率均等的算法才是最好的。

以上仅供参考。

本文禁止无授权转载 - 时光在路上 www.timezls.com 保留所有权利

时光在路上扫码阅读、分享
  • 版权声明:该文章由 时光在路上 发表,共 1560字。除非特别标注来源,否则为原创。详见《版权声明》部分。
  • 转载请注明:文章标题和文章链接 - 时光在路上 - 也可直接“复制本文链接” 或 使用右边二维码分享本文 →