我正在使用自定义头像上传,覆盖默认的gravatars。它在我的uploads / avatars /文件夹中创建了两个文件:
$smallavatar = $userid.'-60x60'.$ext;
$bigavatar = $userid.'-300x300'.$ext;
然后我有一个用于get_avatar()和get_avatar_url()的过滤器:
add_filter( 'get_avatar', 'pbg_avatar', 1, 5 );
function pbg_avatar( $avatar, $id_or_email, $size ) {
//some code here
$curavatar = '/var/www/mysite.com/wp-content/uploads/avatars/'.$user->data->ID;
$avalink = '/wp-content/uploads/avatars/'.$user->data->ID;
// THIS SEEMS TO BE NOT WORKING
if ($size < 31) {
$sizer = '-60x60';
} else {
$sizer = '-300x300';
}
// CHECK AVATAR
if ( file_exists( $curavatar.'-300x300.jpg')) {
$avalink = $avalink.$sizer.'.jpg';
$avatar = "<img alt='{$alt}' src='{$avalink}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
}
return $avatar;
}
然后,当我使用过滤函数调用它时:
get_avatar($userid, 30 );
or
get_avatar_url( $userid, array('size' => 19))
我总是得到300x300尺寸的大头像,因此显然在功能pbg_avatar中检查尺寸是行不通的。如何正确检查?
答案 0 :(得分:1)
您是否有任何使用头像进行处理的插件?您的过滤器优先级为1,该优先级非常低,很有可能被任何插件覆盖。出于测试目的,设置很高的优先级。另外,您对过滤器说,您传递了5个变量,而仅传递了3个变量,以防万一尝试正确设置所有内容,因此请尝试:
add_filter( 'get_avatar' , 'pbg_avatar' , 999 , 3 );
看看是否有帮助。
要了解有关add_filter参数的更多信息,请read here。
编辑:
您可以检查函数中的所有内容。例如,查看它是否正确获取所有变量,只需回显变量即可。
例如,在返回之前要做:
echo "
---------- DEBUGGING -----------<br>
size: {$size} <br>
sizer: {$sizer} <br>
avalink: {$avalink} <br>
-------------------------------<br>
";
检查接收到的$ size是否正确。