[英]Remove gravatar from avatar link Wordpress
我正在使用功能更改默認頭像,但它返回帶有圖片鏈接的照片。 當他們必須從該網站附加此鏈接時,Wordpress會遇到什么問題? 我想將其完全更改為我的網站鏈接。
function sandyavatar ($avatar_defaults) {
$myavatar = get_bloginfo('template_directory') . '/images/icon/avatar.png';
}
我可以使用諸如:preg_replace更改鏈接嗎? 或在其中放置Wordpress代碼進行編輯的位置。
非常感謝。
您可以將以下代碼片段添加到主題中的functions.php
中,以將基於gravatar的頭像鏈接替換為本地的默認頭像
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
或圖像,則可以建立一個緩存邏輯,並使用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');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.