Automattic\WooCommerce\Blocks\BlockTypes

ProductImage::render_imageprivateWC 1.0

Render Image.

Метод класса: ProductImage{}

Хуков нет.

Возвращает

Строку.

Использование

// private - только в коде основоного (родительского) класса
$result = $this->render_image( $product, $attributes );
$product(WC_Product) (обязательный)
Product object.
$attributes(массив) (обязательный)
Parsed attributes.

Код ProductImage::render_image() WC 9.9.3

private function render_image( $product, $attributes ) {
	$image_size = 'single' === $attributes['imageSizing'] ? 'woocommerce_single' : 'woocommerce_thumbnail';

	$image_style = 'max-width:none;';
	if ( ! empty( $attributes['height'] ) ) {
		$image_style .= sprintf( 'height:%s;', $attributes['height'] );
	}
	if ( ! empty( $attributes['width'] ) ) {
		$image_style .= sprintf( 'width:%s;', $attributes['width'] );
	}
	if ( ! empty( $attributes['scale'] ) ) {
		$image_style .= sprintf( 'object-fit:%s;', $attributes['scale'] );
	}

	// Keep this aspect ratio for backward compatibility.
	if ( ! empty( $attributes['aspectRatio'] ) ) {
		$image_style .= sprintf( 'aspect-ratio:%s;', $attributes['aspectRatio'] );
	}

	if ( ! empty( $attributes['style']['dimensions']['aspectRatio'] ) ) {
		$image_style .= sprintf( 'aspect-ratio:%s;', $attributes['style']['dimensions']['aspectRatio'] );
	}

	if ( ! empty( $attributes['style']['dimensions']['minHeight'] ) ) {
		$image_style .= sprintf( 'min-height:%s;', $attributes['style']['dimensions']['minHeight'] );
	}

	$image_id = $product->get_image_id();
	$alt_text = '';
	$title    = '';
	if ( $image_id ) {
		$alt_text = get_post_meta( $image_id, '_wp_attachment_image_alt', true );
		$title    = get_the_title( $image_id );
	}

	return $product->get_image(
		$image_size,
		array(
			'alt'         => empty( $alt_text ) ? $product->get_title() : $alt_text,
			'data-testid' => 'product-image',
			'style'       => $image_style,
			'title'       => $title,
		)
	);
}