WC_Product_Collection_Block_Tracking::track_collection_instancespublicWC 1.0

Track feature usage of the Product Collection block within the site editor.

Method of the class: WC_Product_Collection_Block_Tracking{}

No Hooks.

Returns

null. Nothing (null).

Usage

$WC_Product_Collection_Block_Tracking = new WC_Product_Collection_Block_Tracking();
$WC_Product_Collection_Block_Tracking->track_collection_instances( $post_id, $post );
$post_id(int) (required)
The post ID.
$post(WP_Post) (required)
The post object.

WC_Product_Collection_Block_Tracking::track_collection_instances() code WC 9.8.5

public function track_collection_instances( $post_id, $post ) {

	if ( ! defined( 'REST_REQUEST' ) || ! REST_REQUEST || ! wc_current_theme_is_fse_theme() ) {
		return;
	}

	if ( ! $post instanceof \WP_Post ) {
		return;
	}

	// Don't track autosaves and drafts.
	$post_status = $post->post_status;
	if ( 'publish' !== $post_status ) {
		return;
	}

	// Important: Only track instances within specific types.
	$post_type = $post->post_type;
	if ( ! in_array( $post_type, array( 'post', 'page', 'wp_template', 'wp_template_part', 'wp_block' ), true ) ) {
		return;
	}

	if ( ! has_block( 'woocommerce/product-collection', $post ) && ! has_block( 'core/template-part', $post ) && ! has_block( 'core/block', $post ) ) {
		return;
	}

	$blocks = parse_blocks( $post->post_content );
	if ( empty( $blocks ) ) {
		return;
	}

	$instances = $this->parse_blocks_track_data( $blocks );
	if ( empty( $instances ) ) {
		return;
	}

	// Count orders.
	// Hint: Product count included in Track event. See WC_Tracks::get_blog_details().
	$order_count = 0;
	foreach ( wc_get_order_statuses() as $status_slug => $status_name ) {
		$order_count += wc_orders_count( $status_slug );
	}
	$additional_data = array(
		'editor_context' => $this->parse_editor_location_context( $post ),
		'order_count'    => $order_count,
	);

	foreach ( $instances as $instance ) {

		$event_properties = array_merge(
			$additional_data,
			$instance
		);

		\WC_Tracks::record_event(
			'product_collection_instance',
			$event_properties
		);
	}
}