Automattic\WooCommerce\Blocks\BlockTypes

MiniCart::get_markupprotectedWC 1.0

Render the markup for the Mini-Cart block.

Method of the class: MiniCart{}

No Hooks.

Returns

String. The HTML markup.

Usage

// protected - for code of main (parent) or child class
$result = $this->get_markup( $attributes );
$attributes(array) (required)
Block attributes.

MiniCart::get_markup() code WC 10.7.0

protected function get_markup( $attributes ) {
	if ( is_admin() || WC()->is_rest_api_request() ) {
		// In the editor we will display the placeholder, so no need to load
		// real cart data and to print the markup.
		return '';
	}

	$classes_styles  = StyleAttributesUtils::get_classes_and_styles_by_attributes( $attributes );
	$wrapper_classes = sprintf( 'wc-block-mini-cart wp-block-woocommerce-mini-cart %s', $classes_styles['classes'] );
	$wrapper_styles  = $classes_styles['styles'];

	$icon_color          = isset( $attributes['iconColor']['color'] ) ? esc_attr( $attributes['iconColor']['color'] ) : 'currentColor';
	$product_count_color = isset( $attributes['productCountColor']['color'] ) ? esc_attr( $attributes['productCountColor']['color'] ) : '';
	$styles              = $product_count_color ? 'background:' . $product_count_color : '';
	$icon                = MiniCartUtils::get_svg_icon( $attributes['miniCartIcon'] ?? '', $icon_color );

	$product_count_visibility = isset( $attributes['productCountVisibility'] ) ? $attributes['productCountVisibility'] : 'greater_than_zero';

	$button_html = '<span class="wc-block-mini-cart__quantity-badge">
		' . $icon . '
		' . ( 'never' !== $product_count_visibility ? '<span class="wc-block-mini-cart__badge" style="' . esc_attr( $styles ) . '"></span>' : '' ) . '
	</span>
	' . $this->get_cart_price_markup( $attributes );

	if ( is_cart() || is_checkout() ) {
		if ( $this->should_not_render_mini_cart( $attributes ) ) {
			return '';
		}

		// It is not necessary to load the Mini-Cart Block on Cart and Checkout page.
		return '<div class="' . esc_attr( $wrapper_classes ) . '" style="visibility:hidden" aria-hidden="true">
			<button class="wc-block-mini-cart__button" disabled aria-label="' . __( 'Cart', 'woocommerce' ) . '">' . $button_html . '</button>
		</div>';
	}

	$template_part_contents = $this->get_template_part_contents();

	return '<div class="' . esc_attr( $wrapper_classes ) . '" style="' . esc_attr( $wrapper_styles ) . '">
		<button class="wc-block-mini-cart__button" aria-label="' . __( 'Cart', 'woocommerce' ) . '">' . $button_html . '</button>
		<div class="is-loading wc-block-components-drawer__screen-overlay wc-block-components-drawer__screen-overlay--is-hidden" aria-hidden="true">
			<div class="wc-block-mini-cart__drawer wc-block-components-drawer">
				<div class="wc-block-components-drawer__content">
					<div class="wc-block-mini-cart__template-part">'
				. wp_kses_post( $template_part_contents ) .
				'</div>
				</div>
			</div>
		</div>
	</div>';
}