之前为了WP的Gravatar头像伤心了好久,不得已只能屏蔽调用本地图片,结果所有访问者的头像全部是千篇一律的网站logo,今天在黑桃三老哥的鼓励帮助下,再次尝试替换Gravatar头像镜像源为Cravatar。

第一次按照老哥的说法,直接把代码放到 functions.php文件末尾就行,试了下没成功,本来已经心灰意冷,可又不太甘心,于是第二次从头到尾看了下 functions.php 文件,发现这个文件里,主题作者自带修改 Gravatar SSL化的代码,删除了那段代码,修改为替换 Cravatar 的代码,就成功了~哈哈哈哈,终于兼顾了美观和访问速度~再次感谢黑桃三老兄!

WP的修改方法(先备份 functions.php),将以下代码加到主题的functions.php文件中即可

  1. if ( ! function_exists( 'get_cravatar_url' ) ) {
  2.  
  3. function get_cravatar_url( $url ) {
  4. $sources = array(
  5. 'www.gravatar.com',
  6. '0.gravatar.com',
  7. '1.gravatar.com',
  8. '2.gravatar.com',
  9. 'secure.gravatar.com',
  10. 'cn.gravatar.com',
  11. 'gravatar.com',
  12. );
  13.  
  14. return str_replace( $sources, 'cravatar.cn', $url );
  15. }
  16.  
  17. add_filter( 'um_user_avatar_url_filter', 'get_cravatar_url', 1 );
  18. add_filter( 'bp_gravatar_url', 'get_cravatar_url', 1 );
  19. add_filter( 'get_avatar_url', 'get_cravatar_url', 1 );
  20. }
  21.  
  22. if ( ! function_exists( 'set_defaults_for_cravatar' ) ) {
  23. /**
  24. * 替换 WordPress 讨论设置中的默认头像
  25. */
  26. function set_defaults_for_cravatar( $avatar_defaults ) {
  27. $avatar_defaults['gravatar_default'] = 'Cravatar 标志';
  28.  
  29. return $avatar_defaults;
  30. }
  31.  
  32. add_filter( 'avatar_defaults', 'set_defaults_for_cravatar', 1 );
  33. }
  34.  
  35. if ( ! function_exists( 'set_user_profile_picture_for_cravatar' ) ) {
  36. /**
  37. * 替换个人资料卡中的头像上传地址
  38. */
  39. function set_user_profile_picture_for_cravatar() {
  40. return '<a href="https://cravatar.cn" target="_blank">您可以在 Cravatar 修改您的资料图片</a>';
  41. }
  42.  
  43. add_filter( 'user_profile_picture_description', 'set_user_profile_picture_for_cravatar', 1 );
  44. }

如果没有问题的话,应该可以直接成功,如果出问题了,可以排查下,是不是和我一样,也是因为原主题也有类似的修改方案,删掉,换成这个代码即可!