WordPress函数:get_avatar 获取用户头像

江河/ 2023年06月11日/ WordPress/ 浏览 1228

函数原型:


get_avatar( mixed $id_or_email, int $size = 96, string $default_value = '', string $alt = '', array $args = null ): string|false


检索用户、电子邮件地址、MD5哈希、评论或帖子的avatar<img>标签。


参数说明:


$id_or_email,接受user_id、gravatar md5散列、用户电子邮件、WP_user对象、WP_Post对象或WP_Comment对象。


$size,头像大小。


$default_value,默认图像或默认类型的URL。接受“404”(返回404而不是默认图像)、“retro”(8bit)、“RoboHash”(roboash)、“monsterid”(怪物)、“wavatar”(卡通脸)、“inducon”(“被子”)、“mysteryman”(牡蛎人)、“blank”(透明GIF)或“gravatar_default”(gravatar标志)。默认值为“avatar_Default”选项的值,回退为“神秘”。默认值:“”


$alt,img标记中使用的替代文本。默认值:“”


$args


-- height,高度


-- width,宽度


-- force_default,是否显示默认头像


-- rating,显示头像的最高等级。接受“G”、“PG”、“R”、“X”,并按该顺序进行判断。默认值为“avatar_rating”选项的值。


-- scheme,要使用的URL方案。有关可接受的值,请参见set_url_scheme()。


-- class,要添加到img元素的附加类的数组或字符串。


-- force_display,是否始终显示头像-忽略show_avatars选项。默认值为false。


-- loading,加载属性的值。


-- extra_attr,要插入到IMG元素中的HTML属性。未经消毒。默认为空。


函数源码:


function get_avatar( $id_or_email, $size = 96, $default_value = '', $alt = '', $args = null ) {
	$defaults = array(
		// get_avatar_data() args.
		'size'          => 96,
		'height'        => null,
		'width'         => null,
		'default'       => get_option( 'avatar_default', 'mystery' ),
		'force_default' => false,
		'rating'        => get_option( 'avatar_rating' ),
		'scheme'        => null,
		'alt'           => '',
		'class'         => null,
		'force_display' => false,
		'loading'       => null,
		'extra_attr'    => '',
		'decoding'      => 'async',
	);

	if ( wp_lazy_loading_enabled( 'img', 'get_avatar' ) ) {
		$defaults['loading'] = wp_get_loading_attr_default( 'get_avatar' );
	}

	if ( empty( $args ) ) {
		$args = array();
	}

	$args['size']    = (int) $size;
	$args['default'] = $default_value;
	$args['alt']     = $alt;

	$args = wp_parse_args( $args, $defaults );

	if ( empty( $args['height'] ) ) {
		$args['height'] = $args['size'];
	}
	if ( empty( $args['width'] ) ) {
		$args['width'] = $args['size'];
	}

	if ( is_object( $id_or_email ) && isset( $id_or_email->comment_ID ) ) {
		$id_or_email = get_comment( $id_or_email );
	}

	$avatar = apply_filters( 'pre_get_avatar', null, $id_or_email, $args );

	if ( ! is_null( $avatar ) ) {
		/** This filter is documented in wp-includes/pluggable.php */
		return apply_filters( 'get_avatar', $avatar, $id_or_email, $args['size'], $args['default'], $args['alt'], $args );
	}

	if ( ! $args['force_display'] && ! get_option( 'show_avatars' ) ) {
		return false;
	}

	$url2x = get_avatar_url( $id_or_email, array_merge( $args, array( 'size' => $args['size'] * 2 ) ) );

	$args = get_avatar_data( $id_or_email, $args );

	$url = $args['url'];

	if ( ! $url || is_wp_error( $url ) ) {
		return false;
	}

	$class = array( 'avatar', 'avatar-' . (int) $args['size'], 'photo' );

	if ( ! $args['found_avatar'] || $args['force_default'] ) {
		$class[] = 'avatar-default';
	}

	if ( $args['class'] ) {
		if ( is_array( $args['class'] ) ) {
			$class = array_merge( $class, $args['class'] );
		} else {
			$class[] = $args['class'];
		}
	}

	// Add `loading` and `decoding` attributes.
	$extra_attr = $args['extra_attr'];

	if ( in_array( $args['loading'], array( 'lazy', 'eager' ), true )
		&& ! preg_match( '/\bloading\s*=/', $extra_attr )
	) {
		if ( ! empty( $extra_attr ) ) {
			$extra_attr .= ' ';
		}

		$extra_attr .= "loading='{$args['loading']}'";
	}

	if ( in_array( $args['decoding'], array( 'async', 'sync', 'auto' ), true )
		&& ! preg_match( '/\bdecoding\s*=/', $extra_attr )
	) {
		if ( ! empty( $extra_attr ) ) {
			$extra_attr .= ' ';
		}

		$extra_attr .= "decoding='{$args['decoding']}'";
	}

	$avatar = sprintf(
		"<img alt='%s' src='%s' srcset='%s' class='%s' height='%d' width='%d' %s/>",
		esc_attr( $args['alt'] ),
		esc_url( $url ),
		esc_url( $url2x ) . ' 2x',
		esc_attr( implode( ' ', $class ) ),
		(int) $args['height'],
		(int) $args['width'],
		$extra_attr
	);

	return apply_filters( 'get_avatar', $avatar, $id_or_email, $args['size'], $args['default'], $args['alt'], $args );
}


包含钩子:


apply_filters( 'get_avatar', string $avatar, mixed $id_or_email, int $size, string $default_value, string $alt, array $args )

apply_filters( 'pre_get_avatar', string|null $avatar, mixed $id_or_email, array $args )


使用举例:


<?php echo get_avatar( get_the_author_meta( 'ID' ), 32 ); ?>


发表评论

暂无评论,抢个沙发...

客服 工单