2012-12-30 47 views
2

我想自定义的默认头像中的functions.php添加到WordPress的,但图像没有在设置/讨论或其他地方的网站上显示。该代码工作原因是新的无线电字段与自定义字段名称一起添加,但图像不会显示。由于我使用Localhost,头像是否显示?WordPress的:本地主机上的自定义默认头像?

我没有足够的代表对类似的问题发表评论。

下面的代码:

add_filter('avatar_defaults' , 'wps_new_avatar'); 
function wps_new_avatar($avatar_defaults){ 
    $new_avatar = get_stylesheet_directory_uri() . '/images/default-avatar.png'; 
    $avatar_defaults[$new_avatar] = "Default Avatar"; 
    return $avatar_defaults; 
} 

我试过其他的例子,“添加 - 新建 - 默认 - 阿凡达”同样的结果插件。

+0

尝试使用$ new_avatar = '/图像/默认-avatar.png'; – Arunu

+0

也许您的本地服务器未启用外部访问。化身通常从外部资源获取。当然,你必须在线。 –

+0

@Arunu:没有,没有工作 – gundam00

回答

1

我面临着同样的问题,以及与此完全hackish的解决方案提出了...它的工作原理虽然:)

add_filter('get_avatar', 'so_14088040_localhost_avatar', 10, 5); 

function so_14088040_localhost_avatar($avatar, $id_or_email, $size, $default, $alt) 
{ 
    $whitelist = array('localhost', '127.0.0.1'); 

    if(!in_array($_SERVER['SERVER_ADDR'] , $whitelist)) 
     return $avatar; 

    $doc = new DOMDocument; 
    $doc->loadHTML($avatar); 
    $imgs = $doc->getElementsByTagName('img'); 
    if ($imgs->length > 0) 
    { 
     $url = urldecode($imgs->item(0)->getAttribute('src')); 
     $url2 = explode('d=', $url); 
     $url3 = explode('&', $url2[1]); 
     $avatar= "<img src='{$url3[0]}' alt='' class='avatar avatar-64 photo' height='64' width='64' />"; 
    } 

    return $avatar; 
} 

结果:

localhost avatar


当然,这个过滤器仅适用于开发。

+0

我相当积极的这段代码可以大大改善。我刚刚应用了一个接一个*(基于SO研究)*直到它工作。 – brasofilo

+0

This Works!这与我在我的问题中使用的代码一起工作,即“添加新默认阿凡达”插件,还有一个mu-plugin来更改默认头像。但是,它会打破内置的所有其他头像以及上传的测试用户。但它适用于开发目的! – gundam00

+0

@ gundam00,对我来说,*用户上传的*化身**做节目** ... [有用的Q&A的](http://wordpress.stackexchange.com/search?q=avatar_default)。 – brasofilo