这个get_avatar 过滤器挂钩不仅仅适用于ID为1的用户–我假设您有这个想法,因为页面中关于get_avatar at the codex –, 但实际上,它是根据所使用的上下文来定位用户的,所以每个可能的用户,而不仅仅是一个。挂钩是get_avatar() 函数,它是pluggable function 并且可以被推翻,只需提及另一种可能性。下面我使用的是上述示例,基本上只是删除检查ID为1的用户的条件,以概述一种示例性的未经测试的方法:
add_filter( \'get_avatar\' , \'wpse322010_get_avatar\' , 1 , 6 );
function wpse322010_get_avatar( $avatar, $id_or_email, $size, $default, $alt, $args ) {
$user = false;
if ( is_numeric( $id_or_email ) ) {
$id = (int) $id_or_email;
//see: https://developer.wordpress.org/reference/functions/get_user_by/
$user = get_user_by( \'id\' , $id );
} elseif ( is_object( $id_or_email ) ) {
if ( ! empty( $id_or_email->user_id ) ) {
$id = (int) $id_or_email->user_id;
$user = get_user_by( \'id\' , $id );
}
} else {
$user = get_user_by( \'email\', $id_or_email );
}
if ( $user && is_object( $user ) ) {
//get upload dir data
//see: https://developer.wordpress.org/reference/functions/wp_upload_dir/
$upload_dir = wp_upload_dir();
//get user data
//see: https://developer.wordpress.org/reference/classes/wp_user/
$user_id = $user->ID;
//see: https://developer.wordpress.org/reference/functions/get_userdata/
$user_info = get_userdata( $user_id );
//using the username for this example
$username = $user_info->user_login;
//construct src
$src = $upload_dir[\'baseurl\'] . \'/avatars/\' . $username . \'.jpg\';
$avatar = "<img alt=\'{$alt}\' src=\'{$src}\' class=\'avatar avatar-{$size} photo\' height=\'{$size}\' width=\'{$size}\' />";
}
return $avatar;
}