Automattic\WooCommerce\Blocks\BlockTypes

RelatedProducts::get_related_products_idsprivateWC 1.0

Get related products ids. The logic is copied from the core function woocommerce_related_products. https://github.com/woocommerce/woocommerce/blob/ca49caabcba84ce9f60a03c6d3534ec14b350b80/plugins/woocommerce/includes/wc-template-functions.php/#L2039-L2074

Method of the class: RelatedProducts{}

No Hooks.

Returns

Int[]. Products ids.

Usage

// private - for code of main (parent) class only
$result = $this->get_related_products_ids( $product_per_page ): array;
$product_per_page(number)
Products per page.
Default: 5

RelatedProducts::get_related_products_ids() code WC 10.9.4

private function get_related_products_ids( $product_per_page = 5 ): array {
	global $post;

	$product = wc_get_product( $post->ID );

	if ( ! $product instanceof \WC_Product ) {
		return array();
	}

	$related_products_ids = wc_get_related_products( $product->get_id(), $product_per_page, $product->get_upsell_ids() );
	if ( ! empty( $related_products_ids ) ) {
		// Prime caches to reduce future queries.
		_prime_post_caches( $related_products_ids );

		$related_products = array_filter( array_map( 'wc_get_product', $related_products_ids ), 'wc_products_array_filter_visible' );
		$related_products = wc_products_array_orderby( $related_products, 'rand', 'desc' );
		/** @var \WC_Product[] $related_products */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort

		// Prime caches to reduce future queries.
		_prime_post_caches( array_filter( array_map( fn( $product ) => (int) $product->get_image_id(), $related_products ) ) );

		$related_products_ids = array_map( fn( $product ) => $product->get_id(), $related_products );
	}

	return $related_products_ids;
}