使用本地图像作为默认头像

时间:2013-12-11 作者:MultiformeIngegno

我尝试将此代码段放入函数中。php

add_filter( \'avatar_defaults\', \'newgravatar\' );

function newgravatar ($avatar_defaults) {
    $myavatar = get_bloginfo(\'template_directory\') . \'/images/default_avatar.png\';
    $avatar_defaults[$myavatar] = "Locale";
    return $avatar_defaults;
}
选项讨论中会出现一个新的头像。问题是它根本不是本地的。。化身取自http://i1.wp.com/mydomain.com/wp-content/themes/mytheme/images/default_avatar.png.

所以它通过了i1.wp.com 无论如何我怎么能有一个该死的本地链接?

2 个回复
SO网友:Otto

您在Jetpack插件中启用了光子模块。该模块通过WordPress传送图像。com的CDN。如果不想发生这种情况,请禁用Jetpack中的光子模块。

SO网友:GoTeamScotch

我一直在寻找如何做到这一点,而上面显示的相同功能,每个人都一直建议不起作用,可能是由于最近更新了WP的代码库,我不完全确定。这有点老套,需要编辑核心文件(不太好),但这是一种变通解决方案。步骤如下:

使用原始帖子中指定的相同功能打开/可插拔。php并搜索“function get\\u avatar”,这将使您找到文件中定义函数的位置,向下滚动到输出第一个IMG标记的位置上方,您将看到:

$out = str_replace( \'&\', \'&\', esc_url( $out ) );

$avatar = "<img alt=\'{$safe_alt}\' src=\'{$out}\' class=\'avatar avatar-{$size} photo\' height=\'{$size}\' width=\'{$size}\' />";
略低于$out, 添加$out = $default; 这基本上传递了默认的图像源url(存储在选项表中)

所以它应该是这样的:

    $out = str_replace( \'&#038;\', \'&amp;\', esc_url( $out ) );
    $out = $default;

    $avatar = "<img alt=\'{$safe_alt}\' src=\'{$out}\' class=\'avatar avatar-{$size} photo\' height=\'{$size}\' width=\'{$size}\' />";
} else {
    $avatar = "<img alt=\'{$safe_alt}\' src=\'{$default}\' class=\'avatar avatar-{$size} photo avatar-default\' height=\'{$size}\' width=\'{$size}\' />";
}

return apply_filters(\'get_avatar\', $avatar, $id_or_email, $size, $default, $alt);
同样,这显然并不理想,因为下次更新WordPress时,您将丢失此更改。但就目前而言,这是可行的。

对于希望不修改核心文件的未来访问者,您可能需要考虑筛选WP功能get_avatar. 这样做似乎需要使用正则表达式修改过滤器中提供的字符串,以删除gravatar域。我试过了,但在正则表达式上很糟糕P

结束

相关推荐

Simple Local Avatar Plugin

我想我离实现目标很近了。。我在我的主题上有这个功能,但我需要一个帮助来找到调用简单本地头像功能的正确方法,以便它将显示来自简单本地头像pugin的本地头像图像,而不是wordpress gravatar?$first_img = get_avatar( $post->post_author ); 有人能帮忙吗?function get_post_image() { global $post, $posts; $first_img = \'\'; ob_s