Automattic\WooCommerce\EmailEditor\Integrations\WooCommerce\Renderer\Blocks

Product_Collection::get_cross_sell_product_idsprivateWC 1.0

Get cross-sell product IDs.

Method of the class: Product_Collection{}

No Hooks.

Returns

Array. Array of cross-sell product IDs.

Usage

// private - for code of main (parent) class only
$result = $this->get_cross_sell_product_ids( $parsed_block ): array;
$parsed_block(array) (required)
Parsed block data.

Product_Collection::get_cross_sell_product_ids() code WC 10.8.1

private function get_cross_sell_product_ids( array $parsed_block ): array {
	$product_references = $this->get_product_references_for_collection( $parsed_block );

	if ( empty( $product_references ) ) {
		return array( -1 ); // Return -1 to ensure no products are found.
	}

	$products = array_filter( array_map( 'wc_get_product', $product_references ) );

	if ( empty( $products ) ) {
		return array( -1 );
	}

	$product_ids = array_map(
		function ( $product ) {
			return $product->get_id();
		},
		$products
	);

	$all_cross_sells = array();
	foreach ( $products as $product ) {
		$all_cross_sells = array_merge( $all_cross_sells, $product->get_cross_sell_ids() );
	}

	// Remove duplicates and product references (don't show what's already in context).
	$unique_cross_sells = array_unique( $all_cross_sells );
	$cross_sells        = array_diff( $unique_cross_sells, $product_ids );

	return ! empty( $cross_sells ) ? $cross_sells : array( -1 );
}