从头像中删除头像 link Wordpress

Remove gravatar from avatar link Wordpress

我正在使用功能来更改默认头像,但它 returns 照片带有来自 gravatar 的 link。当他们必须从该网站附加此 link 时,Wordpress 有什么问题?我想完全改变它到我的网站 link.

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 来改变 link 吗? 或者将 Wordpress 代码放入其中进行编辑。

非常感谢。

您可以将以下代码片段添加到您的主题中的 functions.php 中,以将基于 gravatar 的头像 link 替换为本地

中的默认头像
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' );

如果你真的想要某种 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');