2017-08-26 173 views
0

我正在使用函数来更改默认头像,但它会从gravatar链接返回照片。当Wordpress需要将该链接附加到该网站时,会出现什么问题?我想完全改变它到我的网站链接。从头像链接中删除gravatar链接Wordpress

https://secure.gravatar.com/avatar/c4d1fc512b3f9979ac82dafdf6761889?s=60&d=https%3A%2F%2Fdomain.com%2Fwp-content%2Fthemes%2Fdomain%2Fimages%2Ficon%2Favatar.png&r=g

function sandyavatar ($avatar_defaults) { 
    $myavatar = get_bloginfo('template_directory') . '/images/icon/avatar.png'; 
} 

我可以使用类似:preg_replace函数改变链接? 或者在Wordpress代码中进行编辑。

非常感谢。

回答

0

你可以在你的主题下面的代码片段添加到您的functions.php,以取代在当地

function replace_gravatar_with_default_local_avatar() { 
    return some_url_to_default_avatar_image; 
} 
add_filter('pre_option_avatar_default', 'replace_gravatar_with_default_local_avatar'); 

默认头像基于的gravatar-化身链接,如果你真的想排序cache或的gravatar,您可以建立缓存逻辑,并使用get_avatar挂钩来处理此问题。这是一个缓存逻辑的例子。

function cache_gravatar($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('wpurl'); 
    $e = ABSPATH .'avatar/'. $f .'.png'; 
    $t = dopt('d_avatarDate')*24*60*60; 
    if (!is_file($e) || (time() - filemtime($e)) > $t) 
     copy(htmlspecialchars_decode($g), $e); 
    else 
     $avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.png')); 
    if (filesize($e) < 500) 
     copy(get_bloginfo('template_directory').'/img/default.png', $e); 
    $avatar = preg_replace("/srcset='([^']*)'/", '', $avatar); 
    return $avatar; 
} 

add_filter('get_avatar','cache_gravatar'); 
+0

非常感谢,但我看不到变化。 Gravatar的链接仍然出现。 –

+0

现在我明白你的意思了,再次检查我的答案 –