Фильтры get_avatar () и get_avatar_url () передают запрошенный размер - PullRequest
1 голос
/ 08 мая 2019

Я использую пользовательскую загрузку аватара, переопределяющую стандартные граватары. Он создает два файла в моей папке 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 Ответ

1 голос
/ 08 мая 2019

у вас есть плагин, который делает что-то с аватаром? приоритет вашего фильтра равен 1, что очень мало и имеет высокую вероятность того, что он будет переопределен любым плагином. Для целей тестирования установите очень высокий приоритет. Также вы говорите фильтру, что вы передаете 5 переменных, в то время как вы передаете только 3, на всякий случай попробуйте установить все правильно, поэтому попробуйте:

add_filter( 'get_avatar' , 'pbg_avatar' , 999 , 3 );

и посмотрите, помогло ли это.

Чтобы узнать больше об аргументах add_filter, прочитайте здесь .


EDIT:

Вы можете проверить все внутри функции ... например, чтобы увидеть, правильно ли она получает все переменные, просто отобразите переменные.

например, перед возвратом сделайте:

echo "
---------- DEBUGGING -----------<br>
size: {$size} <br>
sizer: {$sizer} <br>
avalink: {$avalink} <br>
-------------------------------<br>
";

и проверьте правильность полученного размера $.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...