Automattic\WooCommerce\Blocks\BlockTypes

ProductCategories::render()protectedWC 1.0

Render the Product Categories List block.

Method of the class: ProductCategories{}

No Hooks.

Return

String. Rendered block type output.

Usage

// protected - for code of main (parent) or child class
$result = $this->render( $attributes, $content, $block );
$attributes(array) (required)
Block attributes.
$content(string) (required)
Block content.
$block(WP_Block) (required)
Block instance.

ProductCategories::render() code WC 8.7.0

protected function render( $attributes, $content, $block ) {
	$uid        = uniqid( 'product-categories-' );
	$categories = $this->get_categories( $attributes );

	if ( empty( $categories ) ) {
		return '';
	}

	if ( ! empty( $content ) ) {
		// Deal with legacy attributes (before this was an SSR block) that differ from defaults.
		if ( strstr( $content, 'data-has-count="false"' ) ) {
			$attributes['hasCount'] = false;
		}
		if ( strstr( $content, 'data-is-dropdown="true"' ) ) {
			$attributes['isDropdown'] = true;
		}
		if ( strstr( $content, 'data-is-hierarchical="false"' ) ) {
			$attributes['isHierarchical'] = false;
		}
		if ( strstr( $content, 'data-has-empty="true"' ) ) {
			$attributes['hasEmpty'] = true;
		}
	}

	$classes_and_styles = StyleAttributesUtils::get_classes_and_styles_by_attributes(
		$attributes,
		array( 'line_height', 'text_color', 'font_size' )
	);

	$classes = $this->get_container_classes( $attributes ) . ' ' . $classes_and_styles['classes'];
	$styles  = $classes_and_styles['styles'];

	$output  = '<div class="wp-block-woocommerce-product-categories ' . esc_attr( $classes ) . '" style="' . esc_attr( $styles ) . '">';
	$output .= ! empty( $attributes['isDropdown'] ) ? $this->renderDropdown( $categories, $attributes, $uid ) : $this->renderList( $categories, $attributes, $uid );
	$output .= '</div>';

	return $output;
}