更换 WordPress 评论的头像地址

2014年7月20日 分类: Wordpress (355 个脚步)

默认情况下,Wordpress 会显示 Gravatar 头像。Gravatar 头像相当于你的 QQ 头像,代表的就是你在网络的个人形象,所以各种社交程序都不能免除头像的使用。

在国内,显示比较慢或者直接超时,在这种情况下,就得考虑是否要将头像修改成别的了。

但是修改整个系统的头像很麻烦,需要修改很多地方,且升级的时候还得一个个改回来。

有2种办法:一种是直接缓存图片到你自己的服务器,然后输出的时候替换成你服务器的地址。还有种就是利用多说的头像缓存,调用多说的地址来得到 Gravatar 头像。

第一种缓存 Gravatar 头像需要你的服务器能顺畅的连接到 Gravatar 的服务器。然后接下来需要在主题中的 functions.php 中添加以下内容:

<?php
function my_avatar($avatar) {   
    $tmp = strpos($avatar, 'http');   
    $g = substr($avatar, $tmp, strpos($avatar, "'", $tmp) - $tmp);   
    $tmp = strpos($g, 'avatar/') + 7;   
    $f = substr($g, $tmp, strpos($g, "?", $tmp) - $tmp);   
    $w = get_bloginfo('home');   
    $e = ABSPATH .'avatar/'. $f .'.jpg';   
    $t = 1209600; //設定14天, 單位:秒   
    if ( !is_file($e) || (time() - filemtime($e)) > $t ) { //當頭像不存在或文件超過14天才更新   
        $get_file = request_file($g);
		$fp = @fopen($e, "w");
		@fwrite($fp,$get_file);
		fclose($fp);
    } else {
        $avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.jpg'));
    }   
    if (filesize($e) < 500) 
        copy($w.'/avatar/default.jpg', $e);   
    return $avatar;   
} 
add_filter('get_avatar', 'my_avatar');  

function request_file($url){
    $ch = curl_init() ;
    curl_setopt($ch, CURLOPT_URL, $url) ;
 
    ob_start();
    curl_exec($ch);
    $result = ob_get_contents() ;
    ob_end_clean();
 
    curl_close($ch) ;
 
    return $result;
}

另一种方法就比较简单了,替换 Gravatar 的地址成多说的就好了。

function mytheme_get_avatar($avatar) {
    $avatar = str_replace(array("www.gravatar.com", "0.gravatar.com", "1.gravatar.com", "2.gravatar.com"), "gravatar.duoshuo.com", $avatar);
    return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar', 10, 3 );

随便打开几个页面,看看头像是否快速的显示出来了呢~

更换 WordPress 评论的头像地址 【声明】本文 更换 WordPress 评论的头像地址 为柠之漠然原创文章,转载请注明出自 枫之落叶
并保留本文有效链接:https://blog.shiniv.com/2014/07/change-wordpress-gravatar-url/ , 转载请保留本声明!

标签: , , , ,
4 条评论
你必须要启用 Javascript