woocommerce_related_products()WC 1.0

Output the related products.

Hooks from the function

Returns

null. Nothing (null).

Usage

woocommerce_related_products( $args );
$args(array)
Provided arguments.
Default: array()

woocommerce_related_products() code WC 10.6.2

function woocommerce_related_products( $args = array() ) {
	global $product;

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

	$defaults = array(
		'posts_per_page' => 2,
		'columns'        => 2,
		'orderby'        => 'rand', // @codingStandardsIgnoreLine.
		'order'          => 'desc',
	);

	$args = wp_parse_args( $args, $defaults );

	$related_products    = array();
	$related_product_ids = wc_get_related_products( $product->get_id(), $args['posts_per_page'], $product->get_upsell_ids() );
	if ( ! empty( $related_product_ids ) ) {
		// Optimization: reduce the number of SQLs needed to populate product objects.
		_prime_post_caches( $related_product_ids );

		// Get visible related products then sort them at random, then handle orderby.
		$related_products = array_filter( array_map( 'wc_get_product', $related_product_ids ), 'wc_products_array_filter_visible' );
		$related_products = wc_products_array_orderby( $related_products, $args['orderby'], $args['order'] );
		/** @var WC_Product[] $related_products */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort

		// Optimization: reduce the number of SQLs needed to fetch images when rendering.
		_prime_post_caches( array_filter( array_map( fn( $product ) => (int) $product->get_image_id(), $related_products ) ) );
	}
	$args['related_products'] = $related_products;

	// Set global loop values.
	wc_set_loop_prop( 'name', 'related' );
	wc_set_loop_prop( 'columns', apply_filters( 'woocommerce_related_products_columns', $args['columns'] ) );

	wc_get_template( 'single-product/related.php', $args );
}