Automattic\WooCommerce\Blocks\BlockTypes\ProductCollection

Controller::add_product_title_click_event_directives()publicWC 1.0

Add interactivity to the Product Title block within Product Collection. This enables the triggering of a custom event when the product title is clicked.

Method of the class: Controller{}

No Hooks.

Return

String. Modified block content with added interactivity.

Usage

$Controller = new Controller();
$Controller->add_product_title_click_event_directives( $block_content, $block, $instance );
$block_content(string) (required)
The block content.
$block(array) (required)
The full block, including name and attributes.
$instance(\WP_Block) (required)
The block instance.

Controller::add_product_title_click_event_directives() code WC 9.6.1

public function add_product_title_click_event_directives( $block_content, $block, $instance ) {
	$namespace              = $instance->attributes['__woocommerceNamespace'] ?? '';
	$is_product_title_block = 'woocommerce/product-collection/product-title' === $namespace;
	$is_link                = $instance->attributes['isLink'] ?? false;

	// Only proceed if the block is a Product Title (Post Title variation) block.
	if ( $is_product_title_block && $is_link ) {
		$p = new \WP_HTML_Tag_Processor( $block_content );
		$p->next_tag( array( 'class_name' => 'wp-block-post-title' ) );
		$is_anchor = $p->next_tag( array( 'tag_name' => 'a' ) );

		if ( $is_anchor ) {
			$p->set_attribute( 'data-wc-on--click', 'woocommerce/product-collection::actions.viewProduct' );

			$block_content = $p->get_updated_html();
		}
	}

	return $block_content;
}