我知道你可以通过使用。。。
<?php echo get_avatar( $id_or_email, $size, $default, $alt, $args ); ?>
喜欢
get_avatar( $current_user->user_email, 128, null, null, array(\'class\' => array(\'img-responsive\', \'img-rounded\') ) );
但我正在过滤
get_avatar
用媒体库映像替换Gravatar,代码似乎已呈现
$args
部分不起作用。
这是我的电话$args
类添加。。。
echo get_avatar($curauth->ID, $size=\'150\', $default=\'\', $alt=$curauth->display_name, $args = array( \'class\' => array( \'rounded-circle\' ) ) );
但这并没有增加任何东西。
这是筛选代码。。。
/**
* Use ACF image field as avatar
* @author Mike Hemberger
* @link http://thestizmedia.com/acf-pro-simple-local-avatars/
* @uses ACF Pro image field (tested return value set as Array )
*/
add_filter(\'get_avatar\', \'tsm_acf_profile_avatar\', 10, 5);
function tsm_acf_profile_avatar( $avatar, $id_or_email, $size, $default, $alt ) {
$user = null; // This added by Robert Andrews to overcome "Notice: Undefined variable" for $user
// Get user by id or email (get_avatar needs to get a user by either id or email, so account for both)
if ( is_numeric( $id_or_email ) ) {
$id = (int) $id_or_email;
$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 ) {
return $avatar;
}
// Get the user id
$user_id = $user->ID;
// Get the file id
$image_id = get_user_meta($user_id, \'avatar\', true); // CHANGE TO YOUR FIELD NAME
// Bail if we don\'t have a local avatar
if ( ! $image_id ) {
return $avatar;
}
// Get the file size
$image_url = wp_get_attachment_image_src( $image_id, \'thumbnail\' ); // Set image size by name
// Get the file url
$avatar_url = $image_url[0];
// Get the img markup
/* Run through Cloudinary
cf. http://cloudinary.com/documentation/image_transformations#modify_image_shape_and_style
crop fill, gravity face, enhance sharpen, 300 wide and tall only to get square image */
$avatar = \'<img alt="\' . $alt . \'" src="http://res.cloudinary.com/braincloud/image/fetch/w_300,h_300,c_fill,g_face,e_sharpen,b_rgb:ccc/\' . $avatar_url . \'" class="img-fluid avatar avatar-\' . $size . \'" height="\' . $size . \'" width="\' . $size . \'"/>\';
// Return our new avatar
return $avatar;
}
我已尝试添加
$args
到函数声明,就像这样。。。
function tsm_acf_profile_avatar( $avatar, $id_or_email, $size, $default, $alt, $args ) {
... 但随后博客页面返回:
Warning: Missing argument 6 for tsm_acf_profile_avatar() in /home/path/wp-content/plugins/plugin/my-gravatar-replacement-plugin.php on line 26
有人建议看一下可插拔的。并从get_avatar
分开吧,但我不明白。
如何恢复$args
功能,以便我可以继续添加自定义类到我的头像?
最合适的回答,由SO网友:Jacob Peattie 整理而成
如果你看the documentation 对于tehget_avatar()
过滤器,您将看到回调可以接受6个参数:
apply_filters( \'get_avatar\', string $avatar, mixed $id_or_email, int $size, string $default, string $alt, array $args )
这意味着您的回调函数正确地接受了参数,包括第6个参数,
$args
:
function tsm_acf_profile_avatar( $avatar, $id_or_email, $size, $default, $alt ) {
问题是
$args
没有传递到回调函数中。这是因为
add_filter()
仅传递上一个参数中指定的参数数,
$accepted_args
. 看见
the documentation:
$accepted_args
(int)(可选)
函数接受的参数数。默认值:1
这基本上是一种冗长的说法,说你需要改变5
到6
在您的add_filter()
电话:
add_filter(\'get_avatar\', \'tsm_acf_profile_avatar\', 10, 6);