本文及资源最后更新时间 2022-04-09 by sky995
众所周知wp的评论头像基于Gravatar,而没有注册此服务的邮箱就没有自定义的头像,虽然Wordpress的设置可以选择一个默认的头像,但都是固定的、或者随机生成的,没有让我们选择自己自定义头像的余地。
因此我们可以通过使用WP钩子来替换头像URL中的参数,即可达到设置自定义头像的目的。
首先,你要将默认头像放到一个网络空间,即可以使用URL访问的位置,例如我使用这个头像:
本文及资源最后更新时间 2022-04-09 by sky995
众所周知wp的评论头像基于Gravatar,而没有注册此服务的邮箱就没有自定义的头像,虽然Wordpress的设置可以选择一个默认的头像,但都是固定的、或者随机生成的,没有让我们选择自己自定义头像的余地。
因此我们可以通过使用WP钩子来替换头像URL中的参数,即可达到设置自定义头像的目的。
首先,你要将默认头像放到一个网络空间,即可以使用URL访问的位置,例如我使用这个头像:
第二步,我们关键的替换代码如下:
// 默认头像地址 | |
$default_avatar = ‘https://static.orangii.cn/avatar/default.jpg’; | |
// 替换掉原本的 d 参数 | |
$url = preg_replace(‘/(\?|&)(d=[a-zA-Z]+)(&?)/’, ‘\\1’, $url); | |
//添加上我们自己的默认头像参数 | |
$url .= “&d=” . urlencode($default_avatar); |
现在可以将它写成一个函数,添加到主题的 functions.php
中,然后注册WP钩子,来达到设置默认头像的目的。示例如下:
function o_default_avatar($url){ | |
$default_avatar = ‘https://static.orangii.cn/avatar/default.jpg’; | |
$url = preg_replace(‘/(\?|&)(d=[a-zA-Z]+)(&?)/’, ‘\\1’, $url); | |
$url .= “&d=” . urlencode($default_avatar); | |
return $url; | |
} | |
add_filter(‘get_avatar_url’, ‘o_default_avatar’); |
顺便,如果你希望再使用CDN加速Gravatar头像的话,可以直接一步到位(如果效果不理想记得更换cdn):
function o_gravatar_cdn($url){ | |
$cdn = “gravatar.loli.net/avatar/”; | |
$default_avatar = ‘https://static.orangii.cn/avatar/default.jpg’; | |
$url = preg_replace(“/\/\/(.*?).gravatar.com\/avatar\//”, “//” . $cdn, $url); | |
$url = preg_replace(‘/(\?|&)(d=[a-zA-Z]+)(&?)/’, ‘\\1’, $url); | |
$url .= “&d=” . urlencode($default_avatar); | |
return $url; | |
} | |
add_filter(‘get_avatar_url’, ‘o_gravatar_cdn’); |