Automattic\WooCommerce\EmailEditor\Integrations\WooCommerce\Renderer\Blocks
Product_Collection::get_cross_sell_product_ids
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() 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 );
}