get_avatar()和get_avatar_url()过滤器传递请求的大小

时间:2019-05-08 10:37:50

标签: php wordpress filter

我正在使用自定义头像上传,覆盖默认的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中检查尺寸是行不通的。如何正确检查?

1 个答案:

答案 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是否正确。