woocommerce_related_products()
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() 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 );
}