我一直在寻找如何做到这一点,而上面显示的相同功能,每个人都一直建议不起作用,可能是由于最近更新了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( \'&\', \'&\', 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