wordpress Gravatar 头像及用户自定义头像二次开发(集合帖)

背景

当浏览不同的网站时,您可能会注意到许多用户的名字旁边都有一张图片。这些图片称为“头像”。WordPress 默认使用一种被称为“Gravatars ” 的头像系统。与标准头像不同,Gravatar会在网络上关注您,并在您在WordPress网站上发布评论时自动出现。

WordPress将Gravatars集成到每个WordPress网站中。一旦用户在gravatar中注册并设置了头像,且在wordpress中使用与gravatar中一致的邮箱,WordPress将自动使用gravatar,以显示在用户个人资料头像、作者简介、评论区及WordPress网站的其他地方。

如果您选择不使用Gravatar进行注册,则管理员设置默认图标将显示在名称旁边。

大陆网站使用gravatar头像遇到的问题

1.访问速度

大陆用户因为网络原因,无法稳定有效访问gravatar头像系统。如果网站的服务器在中国大陆,则使用gravatar头像,首先在所有调用头像的位置,都会因为网络延迟导致访问缓慢。对用户使用体验影响极大。

2.用户个人化需求

如果用户也位于中国大陆,不仅网站上的gravatar头像导致访问缓慢,而且用户自身也没法修改gravatar头像,在这个追求个人化的时代,进一步导致用户体验进一步下降。

怎么解决因为网络造成的服务器访问缓慢?

方法有2,一种是禁用gravatar头像功能。不使用。一种是改路径,将国外的头像路径改向本地。下面将进行分别说明。

禁用gravatar头像功能

将下面的代码放在您使用的主题functions.php(如果使用了子主题,需要放在子主题functions.php)中,将完全删除avatars头像(安全的方法)。对网页打开速度具有非常明显的提升效果。

<?php 




/**
 * 
 * 完全删除avatars
 * 推荐使用。懒人必备,直接不显示,也不用在乎头像到底在哪里?不获取不显示不麻烦
**/
add_action( 'init', 'qmas_remove_avatars' );
if (!function_exists('qmas_remove_avatars')) {
    function qmas_remove_avatars() {
    // 获取BuddyPress对象的头像,不查询直接返回空值。
        add_filter( 'bp_core_fetch_avatar', function () { return ''; } );
    // 设置>讨论>头像列表,不查询直接返回空值,只保留文字。
        add_filter( 'get_avatar', function () { return ''; } );
    // 注册期间过滤用户头像,不查询直接返回空值。
        add_filter( 'bp_get_signup_avatar', function () { return ''; } );
    }
}




?>
  • 使用方法
    • 将上面的代码保存到当前主题functions.php(如果使用了子主题,需要放在子主题functions.php)最后位置。
    • 注意:
      • 如果functions.php最后一行没有?>,请手动添加。并确保您复制的代码前面有<?php,结尾有?>
      • 新的<?php // 您的代码 ?>代码段落和前面一个?>之间只可以换行,不能有任何空行。
      • 任何时候,<?php // 您的代码 ?>比如成对出现,不能存在<?php <?php,或者?> ?>
    • 修改完成后刷新后台页面。
    • 点开“设置”,“讨论”,默认头像,选择刚才设置的头像为默认选中项。
    • 刷新后台页面,即可看见用户等地方的变化。
  • 优点:
    • 代码修改了获取BuddyPress对象头像的过程,让使用BuddyPress评论功能的头像获取不访问gravatar头像,提升访问速度。
    • 代码修改了设置>讨论>头像列表的所有头像的源路径,让打开设置>讨论功能时速度极快。
    • 代码修改了用户注册时头像获取过程,加快访问速度。
  • 缺点:
    • BuddyPress评论功能头像为空,不显示。
    • 设置>讨论>头像列表的所有头像不显示(无残留图像占位符,完美)。
    • 用户注册时不获取头像。

总而言之,上面的方法,非常彻底的加快了头像访问速度,但过去暴力,缺乏灵活性,对用户来说,不太友好。

更改WordPress默认头像为自定义图片

将下面的代码放在您使用的主题functions.php(如果使用了子主题,需要放在子主题functions.php)中,添加本站图片到WordPress默认头像gravatar选项列表。

这段代码只能添加一个用户自定义的头像,并不是用来替换默认头像的。但我们在添加成功以后,可以将默认头像设置为我们添加的这个。这样以来,用户在访问评论区,作者,我的个人资料时,如果没有设置属于自己的头像,那么都会调用这个头像。在一定程度上,同样可以起到优化访问速度的作用。

<?php 










/**
 * 
 * 
 * 添加本站图片到WordPress默认头像gravatar选项列表
 * 使用条件:设置>讨论>头像显示>启用
 * 在国内不建议使用。因为只是添加了头像,在获取头像文件时,地址会被自动添加gravatar网址,速度不定。
 * 
**/
if ( !function_exists('xyx115_gravatar') ) {
	function xyx115_gravatar( $avatar_defaults ) {
		// 设置自定义默认头像的图片url
		$myavatar = "http://xyx115.com/wp-content/uploads/2020/01/logo_250x25001.png";
		// 设置自定义默认头像的代表文字
		$avatar_defaults[$myavatar] = '迷路轮回'; 
		// 返回参数
		return $avatar_defaults;
	}
	add_filter( 'avatar_defaults', 'xyx115_gravatar' );
}

add_filter( 'avatar_defaults', 'xyx115_gravatar' );









?>

上图是添加后的样子,如果要开始使用自己添加的默认头像,还需选中自己的默认头像,并进行保存。如下所示。

更改WordPress默认头像为网站媒体库中的文件

将下面的代码放在您使用的主题functions.php(如果使用了子主题,需要放在子主题functions.php)中,更改WordPress默认头像为网站媒体库中的文件。

注意:下面的方法,将会更改所有默认的头像为你指定的头像文件。如果想原模原样的替换所有头像为国内图像源,或者自己网站的源。那么可以对本函数进行改造。但实际上并没有什么意义。因为默认头像是单选,也不能随机出现。

这里的头像源替换,可以使用媒体库中上传的文件,也可以使用自己的主题,插件目录中的文件。如果使用媒体库中的文件,注意不能删除了。

<?php 






/**
 * 
 * 
 * 更改WordPress默认头像gravatar源地址为本站插件目录
 * 如果想显示自定义的默认头像,直接使用本自定义函数效果最好,如果想连名字也显示自定义的,则使用上一个自定义函数进行配合(实际上并无必要)。
 * //add_filter('get_avatar', 'get_ssl_avatar');
 * 
 * 
**/
function get_ssl_avatar($avatar) {

	// 下面的方法使用插件所在目录的文件作为头像。
	// $str1 = '<img src="'.xyx115_PLUGIN_URL .'Other/Gravatar'.'/bf58432148b643a8b4c41c3901b81d1b-1.jpg" class="avatar avatar-$2" height="$1" width="$1">' ; 
	// 下面的方法使用网站媒体库中的文件作为头像。
	$myavatar = "http://xyx115.com/wp-content/uploads/2020/01/logo_250x25001.png";
	// 图像组合成HTML 的img标签。
	$str1 = '<img src="'. $myavatar .'" class="avatar avatar-$2" height="32" width="32">' ; 
	// 正则替换
	$avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/', $str1 , $avatar);
	//下面一行为调试代码,可以删除。
	//file_put_contents ( xyx115_PLUGIN_PATH.'/Log/error.txt' , "\n\n" . date('Y-m-d H:i:s',time())."\n" .  $avatar ,FILE_APPEND );
	return $avatar;
}








?>

1人评论了“wordpress Gravatar 头像及用户自定义头像二次开发(集合帖)”

  1. Pingback: 使用代码完全删除avatars(特别适合中国用户) – 迷路轮回

评论区已关闭

Scroll to Top